4
  1. int i=1,2,3;

  2. int i=(1,2,3);

  3. int i; i=1,2,3;

これらのステートメントの違いは何ですか? その理由は特に思いつきません。

4

2 に答える 2

16
Statement 1 Result : Compile error.

「=」演算子は「,」演算子よりも優先されます。ここではカンマがセパレータとして機能します。コンパイラは整数変数 'i' を作成し、'1' で初期化します。'2' は有効な識別子ではないため、コンパイラは整数変数 '2' の作成に失敗しました。


Statement 2 Result: i=3

「()」演算子は「=」よりも優先されます。というわけで、まずブラケット演算子が評価されます。「()」演算子は左から右に操作されます。ただし、割り当てられるのは常に最後の結果です。


Statement 3: Result: i=1

「=」演算子は「,」演算子よりも優先されます。したがって、「i」は「1」で初期化されます。「2」と「3」は単なる定数式です。影響はありません。

于 2013-06-22T14:08:27.090 に答える
0

コンマ演算子です

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 行目で動作が異なるのは、コンマ演算子の優先順位が代入よりも低いためです。

于 2013-06-22T14:10:08.913 に答える