[Debutant] Syntaxe de base, mécanisme obscur
Je me lance en autodidacte assez débutant sur le C.
J'en suis à me familiariser avec les valeurs retournées par une expression quelconque, et sur un exercice je ne comprend pas pourquoi lerésultat est ainsi, pourtant j'ai essayé plusieurs trucs pour vérifier quelques idées.
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| int N=10, P=5, Q=10;
N = 5; P = 2;
printf("Avec N = %d et P = %d on a :\n", N, P);
/* premier cas*/
Q = N++ > P || P++ != 3;
printf ("\t'Q = N++ > P || P++ != 3;' donne : N=%d P=%d Q=%d\n", N, P, Q);
/*deuxième*/
Q = P++ != 3 || N++ > P;
printf ("\t'Q = P++ != 3 || N++ > P;' donne : N=%d P=%d Q=%d\n", N, P, Q);
/*troisième*/
Q = 0 || P++ != 3 || N++ > P;
printf ("\t'Q = 0 || P++ != 3 || N++ > P;' donne : N=%d P=%d Q=%d\n", N, P, Q); |
Dans le premier cas il me donne N = 6 P = 2 Q = 1 ; dans le second 6 3 et 1 et dans le dernier 7 4 et 1.
En fait j'ai testé en inversant l'ordre des deux tests dans l'affectation de Q entre le premier et le second cas. Dans le troisième comme je ne comprennais toujours pas, j'ai essayé de rajouter un test avant pour voir ce que ferai C, mais je n'arrive pas à comprendre...
Merci bien d'avance :)
Re: [Debutant] Syntaxe de base, mécanisme obscur
Citation:
Envoyé par Reese
Je me lance en autodidacte assez débutant sur le C.
Tu as donc un bon livre de C entre les mains...
Citation:
J'en suis à me familiariser avec les valeurs retournées par une expression quelconque,
Quelqonque ? Certainement pas. Il y a des choses qui sont définies et d'autres qui ne le sont pas (même si la syntaxe est avalée par le compilateur). Ce qui n'est pas défini peut provoquer n'importe quoi. C'est un bug. Il faut cesser de programmer au hasard, apprendre les regles du langage et s'y tenir. (comme ne pas mélangerl es opérateurs unaires et binaires dans la même expression)