为了账号安全,请及时绑定邮箱和手机立即绑定

如何理解左值

如何理解左值

九州编程 2019-02-16 23:27:20
犀牛书第六版P67页关于左值有这样一句描述:表达式只能出现在赋值运算符的左侧然后举出例子在javascript中,变量、对象属性和数组元素均是左值但是例子中的几个值均可以放在表达式右边于是去查百度,百度中关于左值的描述定义如下:左”(left)的原意是指可以放在赋值符号“=”的左边,但其实也表示能作为&和++等操作符的操作数在描述上的区别就是左值是可以在表达式左边还是只能在表达式左边呢?希望其他非前端开发人员也能给出关于这个概念的见解,不胜感激
查看完整描述

4 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

int a;
举几个例子吧

  1. a = 5; //把(int)5存入a所具有的地址
  2. int *pa = &a;//取a地址
  3. int& foo(int &a) {...return a;} //一个返回引用的函数
    int *pa2 = &foo(a); //取返回对象(a)的地址

以上代码都以变量a举例。
当一个对象被用作右值时,用的是其中的值(内容);
当一个对象被用作左值时,用的是它的地址(身份)。
(可以说左值对象都拥有其所支配的一片内存)

ps.想要深入了解可以去看看C++11的右值引用和std::move()

查看完整回答
反对 回复 2019-03-01
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

即可以放在左面又可以放在右面 那算是语言的语法糖。因为放在左右的含义是不一样的,在左边是它的地址,在右边是它的值

查看完整回答
反对 回复 2019-03-01
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

如果不想像C++中那么详尽。
你就简单理解为等号左边用到的是它的左值,在右边用到的就是它的右值。然后就是临时对象等不让你使用它的左值。

查看完整回答
反对 回复 2019-03-01
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

我猜是翻译错了?
左值:表达式中只能出现在赋值运算符左侧的东西

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 570 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信