左辺値の評価が右辺値の評価に先行し、割り当ても値を返す場合、次のうちどれが最初に評価されますか?
int i = 2;
int x[] = {1, 2, 3};
int y[] = {4, 5, 6};
int z[] = {7, 8, 9};
x[--i] = y[++i] = z[i++]; // Out of bound exception or not?
注: 左辺値の評価が最初に来る一般的な C ライクな言語。私の教科書から:
C などの一部の言語では、代入は、副作用を生成するだけでなく、その評価によって計算された r 値も返す演算子と見なされます。したがって、Cで書くと:
x = 2;
このようなコマンドの評価は、値 2 を x に代入するだけでなく、値 2 を返します。したがって、C では次のように書くこともできます。
y = x = 2;
次のように解釈する必要があります。
(y = (x = 2));