4.1/2から
左辺値によって示されるオブジェクトに含まれる値は、右辺値の結果です。左辺値から右辺値への変換が sizeof (5.3.3) のオペランド内で発生する場合、その演算子はそのオペランドを評価しないため、参照されるオブジェクトに含まれる値はアクセスされません。
好奇心から、if、for、while ステートメントにも同じことが当てはまるのではないかと考えていました。つまり、ステートメントの結果が評価されるときに左辺値が右辺値に変換されるのでしょうか。
4.1/2から
左辺値によって示されるオブジェクトに含まれる値は、右辺値の結果です。左辺値から右辺値への変換が sizeof (5.3.3) のオペランド内で発生する場合、その演算子はそのオペランドを評価しないため、参照されるオブジェクトに含まれる値はアクセスされません。
好奇心から、if、for、while ステートメントにも同じことが当てはまるのではないかと考えていました。つまり、ステートメントの結果が評価されるときに左辺値が右辺値に変換されるのでしょうか。
はい。変換しないと、その値lvalue-to-rvalue
を読み取ることができません。
大まかに言えば、左辺値をある種のコンテナと考え、右辺値をコンテナに含まれる値と考えてください。
C++03、セクション §3.10/7 の読み取り、
右辺値が期待されるコンテキストに左辺値が現れるたびに、左辺値は右辺値に変換されます。4.1、4.2、および 4.3 を参照してください。
§4.1/2 (あなたの引用) と一緒に読んでください。
左辺値によって示されるオブジェクトに含まれる値は、右辺値の結果です。
関連トピック:
答えはイエスです。
ブール値が予想される場合、変換も適用されます。例を見るには、testを変数とします。
if( test )
テストの右辺値は、trueまたはfalseで、if内で評価されます。