C言語での連続代入の評価方法は?

C言語では、連鎖代入の計算順序は右から左となります。つまり、右側の式が先に計算され、その結果が左側の変数に代入されます。

たとえば、

int a, b, c;
a = b = c = 5;

コードでは、まず c=5 が計算され、その結果が b に代入されてから、b の値が a に代入されます。最終的に、3 つの変数すべてが 5 の値を持ちます。

もう一つの例

int a, b, c;
a = (b = 3) + (c = 2);

この例では、b = 3、c = 2を計算し、bとcの値を足して5にし、最終的に5をaに代入する。

代入の計算順序は右から左と決まっていますが、式の中の変数の計算順序が決まっておらず、そのため変数の計算順序に依存した代入は予測不能の結果になることがあるのでおすすめできません。

bannerAds