从4.1 / 2
左值表示的对象中包含的值是 右值结果。当在左右发生左值到右值的转换时 sizeof的操作数(5.3.3)引用对象中包含的值 不被访问,因为该运算符不计算其操作数。
出于好奇,我想知道,同样适用于if,for,while语句,即当评估语句的结果时,左值是否转换为右值?
答案 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