エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください
Twitterで共有ONにすると、次回以降このダイアログを飛ばしてTwitterに遷移します
#include <stdio.h> int main(){ int a = 1; int b = ++a + ++a + ++a; printf("%d\n",b); } 結果は処理... #include <stdio.h> int main(){ int a = 1; int b = ++a + ++a + ++a; printf("%d\n",b); } 結果は処理系に依存し、gccなら10に、clangなら9になります。これが未定義動作なのか処理系定義なのか、それとも他の何かは仕様警察に任せるとして、gccやclangはこれをどう解釈したのか、その気持ちを探ってみようと思います。 なお、以下は中間コードその他から僕が勝手にコンパイラの気持ちを推し量ったものであり、正確性については保証しません。 インクリメント演算子 ++というインクリメント演算子は、変数に1を加算するものです。++aやa++のように、前に付ける場合と後ろにつける場合で、代入に対する振る舞いが変わります。 前につける場合、インクリメントは代入の前に行われます。例えば、