6

从 4.1/2

左值指示的对象中包含的值是右值结果。当在 sizeof (5.3.3) 的操作数内发生左值到右值的转换时,不会访问包含在引用对象中的值,因为该运算符不会评估其操作数。

出于好奇,我想知道是否同样适用于 if、for、while 语句,即当评估语句的结果时,左值被转换为右值?

4

2 回答 2

7

是的。没有lvalue-to-rvalue转换,它无法读取它的value

松散地说,将lvalue视为某种容器,将rvalue视为容器中包含的值。

C++03,第 3.10/7 节读取,

每当左值出现在需要右值的上下文中时,左值就会转换为右值;见 4.1、4.2 和 4.3。

与§4.1/2(您的报价单)一起阅读,

左值指示的对象中包含的值是右值结果。

相关主题:

于 2011-09-18T08:44:58.230 回答
3

答案是肯定的。

当需要一个布尔右值时,也会应用转换。让 test 为变量以查看示例:

if( test )

测试的右值,真或假,在 if 内进行评估。

于 2011-09-18T09:10:46.920 回答