Je ne sais pas si cela est compilateur spécifique, mais quand j'ai essayé de courir les deux expressions DevC++Différence de sortie de i = i ++ + ++ c; et i = ++ i + C++;
Lorsque i=c=b=0;
i=i++ + ++c
donne 2
alors i=++i + c++
donne 1
Mais b=i++ + ++c
et b=++i + ++c
produit le résultat 1
pour les deux expressions. Je sais que l'incrémentation d'une variable deux fois dans la même expression aboutit à une valeur indéfinie selon la spécification standard C, mais je suis curieux de savoir comment le compilateur produit ces résultats. Quelqu'un pourrait-il expliquer comment et pourquoi?
Comportement indéfini. [Les démons peuvent voler hors de votre nez] (http://www.urbandictionary.com/define.php?term=nasal%20demons). En fait, cette question serait intéressante si vous n'attribuez pas le résultat à 'i', ce qui provoque le comportement indéfini. –
@Fred Larson dans le 2ème exemple, il ne valide pas, mais le premier est indéfini comme vous l'avez mentionné –
@Jesus: Je vois l'assignation de retour à «i» dans les deux, donc les deux sont un comportement indéfini. Pas de point de séquence entre l'affectation et l'incrément. –