int a=5;
printf("%d %d %d\n",a++,a++,++a);
Gccでの出力:7 6 8
誰かが答えを説明できますか?この質問が繰り返された場合はお詫び申し上げますが、見つかりませんでした。
ありがとう!!
インクリメント演算子の間にシーケンスポイントがないため、動作は未定義です。
コードが何をするのかを説明するのは無意味な練習です。動作が定義されていないコードを記述しないでください。たとえそれが機能しているように見えても。
コメントで提起されたポイントに対処するには:コンマ演算子がシーケンスポイントとして機能することは事実ですが、ここでのコンマはコンマ演算子ではありません。ウィキペディアから:
演算子としてのコンマトークンの使用は、関数呼び出しと定義、変数宣言、列挙型宣言、およびセパレータとして機能する同様の構造での使用とは異なります。