7

以下が C で違法なのはなぜですか?

y = (w + x)++;

私の本によると、これは違法ですが、その理由がわかりません。

4

7 に答える 7

21

ではi++、 のi変更されています。実行後、iの値は 1 に以前の値を加えたものになります。ただし、値を に保存することはw+xできないため、次のいずれも実行できません。これらはすべて (機能する場合) 多かれ少なかれ同じ効果があります。

w+x = w+x+1;
w+x += 1;
(w+x)++;

割り当ての左側に配置できるものは通常、左辺値( lleft ) と呼ばれます。これを簡潔に言うと、これは++左辺値にのみ適用できw+x、左辺値ではありません。この質問とその回答で、左辺値 (およびその他の種類の値) について詳しく読むことができます。

于 2013-10-09T14:39:30.747 に答える
5

y = x++変数の増分の値を返しますx

y = (x + z)++(x + z)は変数ではないため、失敗します。

于 2013-10-09T14:40:10.197 に答える
4

(w+x)は正当な左辺の値ではないため、不正です。

左辺の値は、(つまり変数) に割り当てることができる値です。

于 2013-10-09T14:38:49.353 に答える
3

ポストインクリメントにはl-valueが必要ですが、そうでw+xはありません。

于 2013-10-09T14:39:49.750 に答える