int i=1,2,3;
int i=(1,2,3);
int i; i=1,2,3;
これらのステートメントの違いは何ですか? その理由は特に思いつきません。
Statement 1 Result : Compile error.
「=」演算子は「,」演算子よりも優先されます。ここではカンマがセパレータとして機能します。コンパイラは整数変数 'i' を作成し、'1' で初期化します。'2' は有効な識別子ではないため、コンパイラは整数変数 '2' の作成に失敗しました。
Statement 2 Result: i=3
「()」演算子は「=」よりも優先されます。というわけで、まずブラケット演算子が評価されます。「()」演算子は左から右に操作されます。ただし、割り当てられるのは常に最後の結果です。
Statement 3: Result: i=1
「=」演算子は「,」演算子よりも優先されます。したがって、「i」は「1」で初期化されます。「2」と「3」は単なる定数式です。影響はありません。
コンマ演算子です
i = a, b, c; // stores a into i ... a=5, b=2, c=3, i=5
i = (a, b, c); // stores c into i ... a=5, b=2, c=3, i=3
1 行目と 2 行目で動作が異なるのは、コンマ演算子の優先順位が代入よりも低いためです。