Problème avec les i++ et ++i

Problème avec les i++ et ++i - C - Programmation

Marsh Posté le 06-10-2013 à 18:10:04    

Bonjours a tous,
 
Voila, j'ai un petit problème de compréhension au sujet des incrémentations. (Je sais que c'est pourtant facile mais en faisant des exos j'ai compris que je n'avais pas tout compris^^)  
J'ai trouvé sur internet l'exercice suivant :
 
Je dois trouver de tête les valeurs que doit afficher la console avec le code suivant :
 
int N=10, P=5, Q=10, R;
   char C='S';
 
 N = 5; P = 2;
   Q = ++N == 3 && ++P == 3;
   printf ("E : N=%d P=%d Q=%d\n", N, P, Q);
 
   N=5; P=2;
   Q = ++N == 6 && ++P == 3;
   printf ("F : N=%d P=%d Q=%d\n", N, P, Q);
 
Il y a plusieurs autres exos de ce type et a chaque fois je trouve le bon Q , mais pour les incrémentations, même si j'en tiens compte dans le calcul, des fois P ou N ne sont pas incrémentés en fin de calcul même si ils semblent pourtant l'avoir été durant le calcul et je ne comprends pas pourquoi.  
 
Ici, je ne comprends pas pourquoi l'ordinateur me dit :      1)  N=6 et P= 2      Moi j'aurais dis : N=6 et P=3
                                                                              2)  N=6 et P= 3                            N=6 et P=3
 
Qqun connait'il la raison de mon erreur?  
 
Merci  

Reply

Marsh Posté le 06-10-2013 à 18:10:04   

Reply

Marsh Posté le 06-10-2013 à 18:18:26    

Bonjour !
 
Pour le premier cas, le deuxième terme du "&&" (++P == 3), donc, n'est évalué que si le premier est vrai. Or ++N vaut 6, donc le terme est faux.
 
Pour le deuxième cas, je ne vois pas où est la contradiction entre ce que dit l'ordinateur et ce que vous pensiez :)
 
Bonne continuation

Reply

Marsh Posté le 06-10-2013 à 19:03:09    

Merci ! Je comprends mieux maintenant.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed