社区
C++ 语言
帖子详情
什么是左值???
lyly0904
2010-02-01 03:16:34
RT
...全文
639
16
打赏
收藏
什么是左值???
RT
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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的左值、右值是根据他的位置来说的;
这也算是形式语言的一个有意思之处吧。
非常量引用的初始值必须为
左值
的问题
非常量引用的初始值必须为
左值
的问题 C++ 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”(move semantics)的基础。而要理解右值引用,就必须先区分
左值
与右值。 对
左值
和右值的一个最常见的误解是:等号左边的就是
左值
,等号右边的就是右值。
左值
与右值的引用
这是关于C++
左值
与右值引用的课程视频,课程易于理解,可以很快掌握
左值
和右值
左值
和右值
c++的右值引用具体用法
在c++11中,支持右值引用,右值引用的用处之一是移动语义,对象的资源所有权发生转移,在c++11之前,移动语义的缺失是c++饱受诟病的问题之一. 什么是
左值
?什么是右值? 凡有名者,皆为
左值
.
左值
对应变量的存储位置,右值对应变量的值本身,右值可以被赋值给
左值
,或者绑定到引用. 右值引用的优点? 类的右值是一个临时对象,如果没有被绑定到引用,在表达式结束时候,就会废弃,在右值被废弃之前,移走资源进行废物利用. 被移走资源的右值在废弃时已经成为空壳,析构的开销降低. 为临时变量续命,也就是为右值续命,右值在表达式结束后就消亡了,如果想继续使用右值,就会使用昂贵的拷贝构造函数 如果能够直接使用临时
为什么(i++)不能做
左值
,而(++i)可以
本文主要讲了为什么(i++)不能做
左值
,而(++i)可以的原因,希望对你的学习有所帮助。
C++ 语言
64,691
社区成员
250,497
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章