重複の可能性:
C コンマ演算子
理解できないコード行に出くわしました。似たようなものをどこかで見た記憶があります。
int x,y,z;
x=(y=2,z=2*y,z+4);
x に割り当てられた値が 8 であることはわかっています。誰かが理由を説明できますか?
重複の可能性:
C コンマ演算子
理解できないコード行に出くわしました。似たようなものをどこかで見た記憶があります。
int x,y,z;
x=(y=2,z=2*y,z+4);
x に割り当てられた値が 8 であることはわかっています。誰かが理由を説明できますか?
これは次と同等です。
y = 2; // y == 2
z = 2 * y; // z == 4
x = z + 4; // x == 8
コンマ演算子のオペランドは左から右に評価され、結果は右のオペランドの値になります。
コンマ演算子は前の値を区切り、コンマ内の最後の項目が結果として返されます。
a = b,c
c の値を a に割り当てます。ここの括弧は本質的に何もしません、ところで
したがって、2 つの代入があり、その結果が返されて x に代入されるステートメントがあります。