接頭辞の増分が接尾辞の増分とどのように異なるかを明示的に説明できる人はいますか?
また、誰かがこの出力6の理由を説明できますか?
i=1;
cout << ++i + ++i;
また、なぜこれが4を与えるのか
i = 1;
cout << ++i + i++;
なぜこれが true を生成するのか
i = 0;
cout << (i++ || i++)
接頭辞の増分が接尾辞の増分とどのように異なるかを明示的に説明できる人はいますか?
また、誰かがこの出力6の理由を説明できますか?
i=1;
cout << ++i + ++i;
また、なぜこれが4を与えるのか
i = 1;
cout << ++i + i++;
なぜこれが true を生成するのか
i = 0;
cout << (i++ || i++)
接頭辞++i
と接尾辞のi++
演算子は、ステートメントが評価される順序に影響します。プレフィックス を使用する++i
と、 の値i
がインクリメントされ、それが使用されます。ただし、接尾辞を使用するとi++
、 の元の値i
が使用され、その行に続くすべての値がインクリメントされます。
1) 明らかに、"++i" は最初に変数をインクリメントし、"i++" はその後にインクリメントします。
2) それほど明白ではありませんが、中置インクリメント/デクリメントを同じ変数に対する他の操作と混合する複雑な式は、未定義の動作を導入する可能性があります。
同意します: スレッドのポストインクリメントとプリインクリメントの概念? この質問に対処します。