Bonjour/Bonsoir
J’ai tapé 2 codes sur C qui, normalement devraient donner le même résultat. J’ai été surpris quand le deuxième n’a pas marché. En faisant des recherches, j’ai vu qu’il fallait que j’ajoute getchar() avant de lire le signe d’opération.
J’aimerais comprendre pourquoi utiliser getchar que dans le deuxième code.
Voici les 2 codes :
Code:#include<stdio.h> int main() { int nb1,nb2; char signe; printf("Entrez un opérateur\n"); //détermination de l'opérateur à utiliser scanf("%c",&signe); printf("Entrez un nombre\n"); //lecture des nombres scanf("%d",&nb1); printf("Entrez un autre nombre\n"); scanf("%d",&nb2); switch(signe) // évaluation des différents cas { case '+': printf("%d + %d = %d\n",nb1,nb2,nb1+nb2); break; case '-': printf("%d - %d = %d\n",nb1,nb2,nb1-nb2); break; case '*': printf("%d * %d = %d\n",nb1,nb2,nb1*nb2); break; case '/': if(nb2==0) printf("Division par zero interdit!"); else printf("%d + %d = %d\n",nb1,nb2,nb1+nb2); break; default: printf("Cet operateur n'exite pas\n" ); } return 0; } #include<stdio.h> int main() { int nb1,nb2; char signe; printf("Entrez un nombre\n"); //lecture des nombres scanf("%d",&nb1); printf("Entrez un autre nombre\n"); scanf("%d",&nb2); printf("Entrez un opérateur\n"); //détermination de l'opérateur à utiliser scanf("%c",&signe); switch(signe) // évaluation des différents cas { case '+': printf("%d + %d = %d\n",nb1,nb2,nb1+nb2); break; case '-': printf("%d - %d = %d\n",nb1,nb2,nb1-nb2); break; case '*': printf("%d * %d = %d\n",nb1,nb2,nb1*nb2); break; case '/': if(nb2==0) printf("Division par zero interdit!"); else printf("%d + %d = %d\n",nb1,nb2,nb1+nb2); break; default: printf("Cet operateur n'exite pas\n" ); } return 0; }
-----