繁体   English   中英

左值如何转换为右值

[英]How lvalue can be converted as rvalue

int x = 8;
int y = x ;

在这里,左值如何充当右值? 我知道这是一个愚蠢的问题,但是我只想在rvalue和lvalue上阐明我的概念。

通过从左值右值的转换。

您几乎可以在需要 值的任何地方使用 ,并且隐式的左值右值的转换将自动发生。

非正式地,此转换是“评估”或“获取” 左值引用的对象的 并非在所有情况下都严格如此; 在未评估的上下文中,例如sizeof的操作数,将不使用对象的值。

ISO / IEC 14882:2011 4.1 [转换lval]:

非函数,非数组类型T的glvalue(3.10)可以转换为prvalue。 如果T是不完整的类型,则必须进行这种转换的程序格式错误。 如果glvalue引用的对象不是类型T的对象,也不是从T派生的类型的对象,或者该对象未初始化,则需要进行此转换的程序将具有未定义的行为。 如果T是非类类型,则prvalue的类型是T的cv不合格版本。 否则,prvalue的类型为T

左值是可以出现在赋值左侧的任何值。 可以分配的东西,例如在这种情况下的变量x Rvalue是具有值(例如8或得到x的值)的事物。 您可以将左值视为右值的子集,即所有左值都可以查询其值并用作右值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM