【C语言】左值与右值

左值就是“=”号左边的变量或表达式,是一个确切的,具有实际空间的存储地址,右值是一个数据,因此左值不能是一个字面值。

按字面意思,通俗地说。

就是以赋值符号 = 为界,= 左边的就是左值,= 右边就是右值。

比如:

(1) int b = 3; 
(2) int a = b;
第(2)行代码,a为左值,b为右值。

更深一层

可以将 L-value 的 L, 理解成 Location,表示定位,地址,代表一个内存地址值 将 R-value 的 R
理解成 Read,表示读取数据,是真实值

现在的计算机数据放在内存。内存有两个很基本的属性:内存地址和内存里面放的数据。想象完全一样的箱子。每个箱子有个编号,用来区分到底是哪个箱子,箱子里面可以放东西。内存地址相当于箱子的编号,内存的数据,相当于箱子里面放的东西。

变量名编译之后,会映射成内存地址。看看a = b的含义。其实就是 将 “b地址内存里面的数据”,放到”a地址内存”中。

左值和右值是相对于赋值表达式而言的。左值是能出现在赋值表达式左边的表达式。左值表达式可以分为可读写的左值和只读左值。右值是可以出现在赋值表达式右边的表达式,他可以是不占据内存空间的临时量或字面量,可以是不具有写入权的空间实体。
如:

int a=3;
const int b=5;
a=b+2; //a是左值,b+2是右值
b=a+2; //错!b是只读的左值但无写入权,不能出现在赋值符号左边
(a=4)+=28; //a=4是左值表达式,28是右值,+=为赋值操作符
34=a+2; //错!34是字面量不能做左值

其实没有什么左值和右值!只是翻译成这样的,实际是:

L-value中的L指的是Location,表示可寻址。The “l” in lvalue can be though of as

location R-value中的R指的是Read,表示可读。The “r” in rvalue can be thought of as”read” value.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值