Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
次のプログラムの出力を説明できません。私の知る限り、出力は19になるはずですが、実行すると20の出力が得られます。gccを使用してこのプログラムをコンパイルしました。
int main() { int x, y = 5; x = ++y + ++y + --y; printf("%d", x); return 0; }
あなたのプログラムyは、2 つのシーケンス ポイント (あなたの場合、ステートメントの最後) の間で複数回変更すると、未定義の動作を悪用します。で警告をオンにすると-Wall、コンパイラはおそらくそれについて警告することさえあります。
y
-Wall
6+7+6 = 19 なので、19 が出力になります