C++中的左值和右值

摘自《C++ Primer》第五版

C语言中,左值可以位于赋值语句的右侧,右值则不能。

C++中,一个对象被用作右值时,用的是对象的值(内容);当对象被当做左值的时候,用的是对象的身份(在内存中的位置)。     一个左值表达式的求值结果是一个对象或者一个函数。当然,以常量对象为代表的某些左值实际上不能作为赋值语句的左侧运算对象(本人理解:功能不全的左值;除了自己的初始化,一般不用作左值使用。)

个人理解:左值一般和地址有关系。

左值和右值转换的一个重要原则:在需要右值的地方可以使用左值来替代,但是不能在需要左值(位置)的地方,使用右值。当然,也有一种例外的情况(参见P470,还没看到)。

P149:左值是指那些求值结果为对象或函数的表达式。一个表示对象的非常量左值可以作为赋值

关于运算符操作数和返回值的左右值

操作符
操作数
求值结果
备注
算数运算符
右值
右值

逻辑运算符和关系运算符
右值
右值

赋值运算符
左侧操作数必须是可以修改的左值
左值

递增/递减运算符
左值
前置版本返回左值,后置版本返回右值

成员访问运算符(.  ->)

箭头运算符求值结果是一个左值;点运算符区分情况:如果成员所属的对象是左值,那么返回结果是左值,反之,返回右值。

条件运算符
无要求
当?后面的两个表达式都是左值或者能转换成同一种左值类型时,运算结果是左值;否则运算结果是右值。

位运算符
无要求;操作数为整形或可以提升为整形的char
右值
推测
sizeof运算符
无要求


逗号运算符
无要求
和右侧运算对象保持一致,右侧运算对象是左值,结果也是左值


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值