2017-04-23 1 views
0

Le programme suivant comprend simplement des opérations d'incrémentation et de décrémentation. Comme ma prédiction le programme devrait imprimer "0 1 1 1" mais il imprime "1 0 2 0" à la place, mais pourquoi?Le chaînage "cout" lors de l'exécution de l'incrémentation et de la décrémentation produit un résultat inattendu.

#include<iostream> 
using namespace std; 
int main(void) 
{ 
    int i=0; 
    cout<<i++<<" "<<i++<<" "<<--i<<" "<<i++;//this will print "1 0 2 0" 
} 

... mais il fonctionne très bien si je fais chaîne pas la commande de sortie comme,

cout<<i++<<endl; 
cout<<i++<<endl; 
cout<<--i<<endl; 
cout<<i++<<endl; 

Même si elles doivent travailler de la même manière, mais ils produisent des résultats différents. Mais pourquoi?

enter code here 

Répondre

0

Post et incrément pré lorsque vous utilisez i ++ il court après la ligne lorsque vous exécutez ++ i il ajoute avant que la ligne est exectued alors quand vous avez -I il soustrait i avant la ligne a couru pour la Appels i ++ Essayez de tous les faire soit i ++ et i-- ou -i et ++ i donc les résultats ne varient pas selon qu'ils sont sur la même ligne ou non