2012-04-03 3 views
0

Possible en double:
Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)Pourquoi cette sortie de code 3

J'ai trouvé ce morceau de code, à l'origine ici:

#include <stdio.h> 

int main() 
    { 
    int p = 0; 
    p = p++ + ++p; 
    printf("p=%d\n", p); 

} 

Je devinais la sortie sera 2 , mais quand j'ai compilé le code et que je l'ai exécuté, la sortie était 3, pourquoi?

+0

http://stackoverflow.com/questions/949433/could-anyone-explain-these-undefined-behaviors-iiiii-etc – Mysticial

+0

juste pour être sûr: vous cherchez une explication pour la sortie de cette comportement indéfini? – cctan

+0

Lisez le code de l'assembly généré par votre compilateur. –

Répondre

6
p = p++ + ++p; 

est un comportement indéfini. Lire à propos de Sequence point.

Questions connexes