cast char* en long int, pb avec taille du long int
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:
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:
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 :zoubi: