[C++] Tableau Char/Int

Fermé
Apaachee Messages postés 248 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 25 août 2011 - 3 juin 2009 à 23:24
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 4 juin 2009 à 08:16
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

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 vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
4 juin 2009 à 08:16
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