【Cprimerplus_01】左值、右值和运算符的一些注意事项

一、几个术语:数据对象、左值、右值和运算符

​ 在C语言中,=并不意味着”相等“,而是一个赋值运算符。比如bmw = 2002;把值2002赋给变量bmw。也就是说,=号左侧是一个变量名,右侧是赋给该变量的值。在C语言中,类似2002 = bmw;这样的句子没有意义(实际上是无效的)。因为这种情况下,2002被称作 右值(rvalue),只能是字面常量,不能给常量赋值,常量本身就是它的值。

​ 因此,在编写代码时要记住,=号的左侧必须是一个变量名。实际上,赋值运算符的左侧必须引用一个存储位置。

​ 概括地说,C使用**可修改的左值(modifiable lvalue)**标记那些可赋值实体。”可修改的左值“这个概念可能不太好懂,我们再来看一些定义。

1.数据对象

​ 赋值表达式的目的是把值存储到内存位置上。 用于存储值的数据存储区域统称数据对象(data object)。C标准只有提到这个概念时才会用到对象这个术语。

​ 使用变量名是标识对象的一种方法。

2.左值

**左值(lvalue)**是C语言的术语,用以标识特定数据对象的名称或表达式。因此,对象指的是实际的数据存储,而左值是用于标识特定或定位存储位置的的标签

​ 对于早期的C语言,提到左值意味着:

  1. 它可以指定一个对象,可以引用内存地址中的值;
  2. 它可以用在赋值运算符的的左侧,左值中的l来源于left。

​ 但是后来,标准中新增了const限定符,用const创建的变量不可修改。因此,const标识符满足上面的第1项,但是不满足第2项。一方面,C继续把标识对象的表达式定义为左值,一方面某些左值却不能放在赋值运算符的左侧。

​ 为此,C新增了一个术语可修改的左值(modifiable lvalu

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值