Bonjour,
J'arrive pas à résoudre cette instruction: j=--j+i, on me dit de trouver les valeurs de i et j (i=2,j=2)
Merci d'avance.
-----
Bonjour,
J'arrive pas à résoudre cette instruction: j=--j+i, on me dit de trouver les valeurs de i et j (i=2,j=2)
Merci d'avance.
Bonsoir
Il faut considérer d'une manière générale la priorité des opérateurs et l'allier à la connaissance du langage. Consultez par exemple un livre tel le kernighan et ritchie pour la syntaxe du c. Cf pré ou post...
cdlt
le égal est une affectation, simplement. Oublie le, calcule ton --j+i, et tu auras ta réponse.
On dit décrémentation, c'est un poil plus court...
et ici: --j, il s'agit de pré-décrémentation donc on prend j, on lui fait -1 (on le range), on continue le calcul...
alors que si c'était j--, c'était de la post-décrémentation, on aurait prit j pour le reste du calcul, on aurait rangé le résultat dans la variable désignée avant le = (encore une fois j), puis on aurait la fait décrémentation.
mais comme ici, c'est j qui est affecté et que le reste du calcul n'est pas affecté par l'ordre des opération, c'est pareil...
donc j=--j+i et j=j--+i sont équivalents,
mais j=--j*i et j=j--*i ne le sont pas,
ni i=--j+i et i=j--+i ne le sont pas non plus...
bref, l'exemple de base est assez mal choisi pour présenter la pré-décrémentation (et la post-décrémentation)...
Jusqu'ici tout va bien...
Bonjour
Je note que les réponses ont été fournies pour le C (et qu'elles sont valables aussi pour Java, C++, C# & JavaScript) mais qu'on ne sait pas pour quel langage la question a été posée .....
Je dis ça, je dis rien, hein .....
Et pourtant...
en tout cas avec gcc comme il y a post-décrémentation, j=j--+i donne j=3...
En fait, c'est semble-t-il indéterminé (la post-décrémentation peut se faire avant ou après l'affectation du = ) :
http://en.cppreference.com/w/cpp/language/eval_order
Donc, la balle au centre ...i = i++ + 1; // undefined behavior (but i = ++i + 1; is well-defined)
Jusqu'ici tout va bien...
En java, ça fonctionne comme j'ai indiqué.
Comme dit Bluedeep l'auteur aurait du préciser le langage.
Et je note que si, en C, une des deux formes est indéterminée et pas l'autre, il est alors faux de dire :
Envoyé par polo974donc j=--j+i et j=j--+i sont équivalents