Les valeurs de caractères x, y, z sont des caractères ASCII non des chiffres. En ASCII, les chiffres 0 à 9 sont représentés par les caractères '0' à '9' consécutivement. La valeur int du caractère '0' est 48 en décimal, le caractère '1' est 49, et ainsi de suite. Tapez "man ascii" à partir d'une invite linux pour voir la liste complète des caractères ASCII. Donc, pour convertir un '0' en valeur int, soustrayez '0' et vous obtenez 0. Parce que les caractères sont consécutifs dans la table ASCII, cela fonctionne pour les 10 caractères ASCII numériques (ceci est pas d'accident, il a été conçu de cette façon). Notez comme David le fait remarquer: Bien qu'il existe d'autres codages en dehors de l'ASCII, tous les encodages exigent que les caractères numériques soient consécutifs, donc cette mathématique à convertir en entiers fonctionne toujours.
Donc, si vous avez un char c qui est char numérique de « 0 » à « 9 », vous pouvez obtenir la valeur numérique à l'aide
int i = C - '0';
Vos valeurs pour un et b tort, vous convertissez la valeur de caractères ASCII à un int en utilisant un plâtre, mais vous devez le convertir en soustrayant la valeur du caractère « 0 »:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char x, y, z;
printf("Enter the calculation: ");
scanf("%c %c %c", &x, &y, &z);
// Convert ASCII char to int by subtracting value of char '0'
int a = x - '0';
int b = z - '0';
if (y == '+') {
printf("The answer is %d", a+b);
}
else if(y == '*') {
printf("The answer is %d", a*b);
}
else {
printf("Use only +, -, /, * signs");
}
return 0;
}
pour convertir des chaînes à ints, nous e la fonction atoi() mentionné dans ce post here:
char *myString = "1234";
int myIntVal = atoi(myString);
Ceci est un double de https://stackoverflow.com/a/868508/6693299
Quelle est la valeur de 'x' et' z'? Ne sont-ils pas des personnages? Donc, si vous utilisez un débogueur, vous pouvez rapidement trouver la réponse. Apprendre à utiliser un débogueur; Ça vaut la peine! (Autres utilisateurs: laissez-le comprendre pour qu'il apprenne.) –
En général, décrivez ce qui se passe lorsque vous exécutez le programme - quelle est la «mauvaise réponse» qu'il donne? – Svaberg