[C++] Tableau Char/Int

Apaachee Messages postés 248 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je possède une opération : 1+99 que je place dans un tableau de char :

	
cout<<"entrez l'opération :\n"<<endl;
cin>>exp; //La variable exp contient l'opération


Mon tableau possède donc 4 cases :
Case 1 : "1"
Case 2 : "+"
Case 3 : "9"
Case 4 : "9"

En castant les char en int, comment faire pour retrouver mon nombre 99 et non 2 nombres 9 et 9 ?
A voir également:

2 réponses

loupius
 
Salut l'indien !
Ta question me désarçonne.. et pourtant je ne suis pas né de la dernière pluie.
J'aurais aimé savoir quelle était la finalité de cette opération.
En attendant, je suis au regret de te dire que ce n'est pas par un cast que tu pourras t'en sortir, et à cela il y a plusieurs raisons; tu veux faire un cast sur deux cases mémoire consécutives pour obtenir un entier:
- En mémoire tu as 2 caractères ASCII soit 0x39 en hexadécimal alors que toi tu veux obtenir 99 en décimal (soit 0x63 en hexadécimal); donc par un cast tu obtiendrait 0x3939 soit 14649 en décimal,,
- Même si cela était possible, on aurait un problème d'endian (ce n'est pas une plaisenterie), car sur nos PC, les poids faibles sont stockés avant les poids forts (place aux jeunes!)(évidemment avec 99, cela n'engendrerait pas d'erreur, mais c'est un cas particulier).
Il n'y a dont qu'une manière de s'en sortir:
entier = (case3 - '0') * 10 + (case4 - '0').
Voilà, je n'ai pas d'autres flèches à mon arc.
Bon calumet et bon scalp.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
Pour compléter, ce que tu cherche à faire c'est une calculatrice. Mais pour cela, il faut avant tout faire un analyseur syntaxique.
0