左值转换的左值

时间:2011-09-18 08:42:31

标签: c++ lvalue-to-rvalue

从4.1 / 2

  

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

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

2 个答案:

答案 0 :(得分:7)

是。如果没有lvalue-to-rvalue转换,则无法读取

简而言之,将左值视为某种容器,将 rvalue 视为容器中包含的值。

C ++ 03,第3.10 / 7节,

  

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

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

  

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

相关主题:

答案 1 :(得分:3)

答案是肯定的。

当预期bool rvalue时,也会应用转换。让test成为一个变量来看一个例子:

if( test )

在if。

中评估测试的Rvalue,true或false