31

C ++では、コピーではなくインクリメントされたオブジェクト自体が返されるため、pre-increment演算子は左辺値を返します。しかし、Cでは、それは右辺値を与えます。なんで?

4

3 に答える 3

18

Cには参照がありません。C ++では(左辺値)++iへの参照を返しますが、 Cではコピー(インクリメント)を返します。i

C99 6.5.3.1 / 2

プレフィックス++演算子のオペランドの値がインクリメントされます。結果は、インクリメント後のオペランドの新しい値です。式++Eは(E + = 1)と同等です。

‘‘value of an expression’’ <=> rvalue

ただし、歴史的な理由から、「参照がCの一部ではない」ことが考えられる理由である可能性があります。

于 2011-01-26T08:05:05.557 に答える
3
于 2011-01-26T08:00:44.577 に答える
2

頭のてっぺんから、事前にインクリメントされた変数を左辺値として使用した結果として生じる可能性のある有用なステートメントを想像することはできません。C ++では、演算子のオーバーロードが存在するため、可能です。この制限のために、Cで実行できないことの具体例はありますか?

于 2011-01-26T07:58:59.197 に答える