什么是左值???

lyly0904 2010-02-01 03:16:34
RT
...全文
639 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
失落的凡凡 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xiaoyuanyuan2009 的回复:]
左值:左值可以出现在赋值语句的左边或右边。
右值:右值只能出现在赋值的右边,不能出现在赋值语句的左边。
变量是左值,因此可以出现在赋值语句的左边。数字字面值是右值,因此不能被赋值。

                                                  --------选自《C++  Primer》(39页)
[/Quote]

这是旧的定义了,不过这么理解也是不错的。
谁学逆向工程 2010-02-01
  • 打赏
  • 举报
回复
左值:左值可以出现在赋值语句的左边或右边。
右值:右值只能出现在赋值的右边,不能出现在赋值语句的左边。
变量是左值,因此可以出现在赋值语句的左边。数字字面值是右值,因此不能被赋值。

--------选自《C++ Primer》(39页)
fo1_sky 2010-02-01
  • 打赏
  • 举报
回复
一楼很详细
十八道胡同 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 taodm 的回复:]
其实,没必要搞清楚左右值概念,除非写编译器的。
[/Quote]
和呵呵
lxy4437 2010-02-01
  • 打赏
  • 举报
回复
Expressions that refer to memory locations are called "l-value" expressions. An l-value represents a storage region's "locator" value, or a "left" value, implying that it can appear on the left of the equal sign (=). L-values are often identifiers.
traceless 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 taodm 的回复:]
其实,没必要搞清楚左右值概念,除非写编译器的。
[/Quote]
taodm 2010-02-01
  • 打赏
  • 举报
回复
其实,没必要搞清楚左右值概念,除非写编译器的。
lovesi3344 2010-02-01
  • 打赏
  • 举报
回复

提醒一点
一般来说,左值都素有地址的,但是寄存器变量是没有地址的

xuexi1028 2010-02-01
  • 打赏
  • 举报
回复
a= 1;
a就是左值
坚持就是幸福 2010-02-01
  • 打赏
  • 举报
回复
该说的都说了
traceless 2010-02-01
  • 打赏
  • 举报
回复
这个可以在代码中慢慢体会。


左值:能代表一个“容器”的就是一个左值。

右值: 能代表一个数值的就是一个右值。
lovesi3344 2010-02-01
  • 打赏
  • 举报
回复
左值

1.就是可以被左右的值
2.赋值号左边的值
3.就是说它不是右值
4.不能被左右的值就不是左值
5.不能放在赋值号左边的值就不是左值
6.是右值就不是左值,是左值就不是右值
superlee19 2010-02-01
  • 打赏
  • 举报
回复
1>数据值,存储在某个内存地址中,也称右值(rvalue),右值是被读取的值(read value),文字常量和变量都可被用于右值。
2>地址值,即存储数据值的那块内存地址,也称左值(lvalue),文字常量不能被用作左值。

左值是一个引用到对象的表达式,通过左值我们可以取出该对象的值。通过可修改的左值表达式(modifiable lvalue)我们还可以修改该对象的值。(需要说明的是,在C++中,左值还可以引用到函数,即表达式f如果引用的是函数类型,那么在C中它既不是左值也不是右值;而在C++中则是左值)。因为左值引用到某一对象,因此我们使用&对左值表达式(也只能对左值表达式和函数)取址运算时,可以获得该对象的地址(有两种左值表达式不能取址,一是具有位域( bit-field )类型,因为实现中最小寻址单位是 byte;另一个是具有register指定符,使用register修饰的变量编译器可能会优化到寄存器中)。

kaka_21 2010-02-01
  • 打赏
  • 举报
回复
up·
kaka_21 2010-02-01
  • 打赏
  • 举报
回复
赋值语句左边的变量
int a = 0;

a就称为左值。
guoyu_bo 2010-02-01
  • 打赏
  • 举报
回复
C++语言中可以放在等号左边的变量,即具有对应的可以由用户访问的存储单元,并且能够由用户去改变其值的量。
  或者说左值是代表一个内存地址值,通过这个内存地址,就可以对内存进行读写操作;这也就是为什么左值可以被赋值的原因了。
  相对应的还有右值:当一个符号或者常量放在操作符右边的时候,计算机就读取他们的“右值”,也就是其代表的真实值。
  比如: int ia,ib;
  ib=0;
  ia=ib;
  在这里,首先定义ia,ib。然后对ib赋值,此时计算机取ib的左值,也就是这个符号代表的内存位置即内存地址值,计算机取0的右值,也就是数值0;然后给ia赋值为ib,此时取ib的右值给ia的左值;
  所以说,ib的左值、右值是根据他的位置来说的;
  这也算是形式语言的一个有意思之处吧。

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧