Bonjour,

Je dois réaliser une calculatrice en c. Je demande à l'utilisateur d'entre le calcul que je stock dans une chaine de caractère. Par exemple, l'utilisateur entre "28*2", je stock ce calcul dans un char*.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
char* chaine = (char*)malloc(1000*sizeof(char));
Le but de la calculatrice est de pouvoir aller des entiers allant de -2147483648 à 2147483647. Il me faut donc utiliser les long int.

Je parcours ensuite la chaine, et souhaite transformer les nombres en long.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
char* nombre = (char*)malloc(1000*sizeof(char));
 
while(estNumerique(chaine[i])) //si nombre à plusieurs chiffres
      {
	sprintf(nombre, "%s%c", nombre, chaine[i]); //concatène le chiffre courant à la suite de nombre
	i++;
      }
 
long valeur_entiere = strtol(nombre,NULL,10); //cast la chaine nombre en long
Il n'y a pas d'erreur, mais lorsque je souhaite calculer par exemple 67+100, le résultat que j'obtiens est -89. Les résultats que j'obtiens ne sont jamais supérieur à la taille d'un char, c'est à dire toujours entre -128 et 127.

Lorsque je cast en long int je pense que la taille reste à la taille d'un char et je ne comprends pas pourquoi. Quelqu'un peut il m'aider ?

Merci bien