0
int x = 8;
int y = x ;

ここで、左辺値を右辺値としてどのように機能させることができますか?これがばかげた質問であることは知っていますが、右辺値と左辺値の概念を明確にしたいと思います。

4

2 に答える 2

3

左辺値から右辺値への変換を介して。

左辺値は、右辺値が必要なほとんどの場所で使用でき、暗黙的な左辺値から右辺値への変換が自動的に行われます。

非公式には、この変換は、左辺値が参照するオブジェクトの「評価」または「値の取得」です。これはすべての場合に厳密に当てはまるわけではありません。のオペランドなどの未評価のコンテキストでsizeofは、オブジェクトの値は使用されません。

ISO/IEC 14882:2011 4.1 [conv.lval]:

非関数型、非配列型の glvalue (3.10) は、Tprvalue に変換できます。Tが不完全な型の場合、この変換を必要とするプログラムは形式が正しくありません。glvalue が参照するオブジェクトが型のオブジェクトでTはなく、 から派生した型のオブジェクトでもTない場合、またはオブジェクトが初期化されていない場合、この変換を必要とするプログラムの動作は未定義です。Tが非クラス型の場合、prvalue の型は の cv 非修飾バージョンですT。それ以外の場合、prvalue の型は ですT

于 2012-12-24T18:36:07.523 に答える
2

左辺値は、割り当ての左側に表示できる任意の値です。xこの場合の変数のように、代入できるもの。右辺値は、値を持つもの、8または値を取得するものですx。左辺値は、右辺値のサブセットと考えることができます。つまり、すべての左辺値は、値を照会して右辺値として使用できます。

于 2012-12-24T18:36:17.477 に答える