2017-04-23 16 views
0

次のプログラムには単純にインクリメントとデクリメントが含まれています。私の予測として、プログラムは "0 1 1 1"を印刷する必要がありますが、代わりに "1 0 2 0"を印刷しますが、なぜですか?インクリメントとデクリメントを実行中に "cout"チェインを実行すると、予期しない結果が発生する

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

...しかし、私は、彼らが同じように動作するはずですが、彼らは異なる結果を生成している場合でも、チェーン出力コマンドをのような、

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

をしない場合は、それが正常に動作します。しかし、なぜ?

enter code here 

答えて

0

ポストとあなたはそれはあなたがラインが走った前に、それは私から減算--iなかったときに、ラインがとてもexectuedされる前に追加します++ I実行したとき、私はそれが行の後に実行++を使用前の増分私は+ +呼び出します。

i ++とi-または--iと++ iのいずれかを作ってみてください。同じ行にいるかどうかに基づいて結果は異なります。

関連する問題