1. 数据对象

  赋值表达式语句的目的是把值存储到内存位置上. 用于存储值的数据存储区域统称为数据对象.

  2. 左值

  左值是C语言的术语, 用于标识特定数据对象的名称或表达式.

  对象指的是实际的数据存储, 而左值用于标识或定位存储位置的标签.

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

    a. 它指定一个对象, 所以引用内存中地址;

    b. 它可用在赋值运算符的左侧.

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

  对于此中矛盾, C标准新增了一个术语, 可修改的左值, 用于标识可修改的对象. 所以, 赋值运算符的左值应该是可修改的左值. 当前标准建议, 使用术语对象定位值.

  3 右值

  右值指的是能赋值给可修改的左值, 且本身不是左值. 例如:

int bmw = ;

  bmw是可修改的左值, 200 是右值. 右值源于right. 右值可以是常量,变量或其他可求值的表达式. 实际上, 当前标准在描述这一概念时使用的是表达式的值,而不是右值.

  举例说明:

int ex;
int why;
int zee;
const int TWO = ;
why = ;
zee = why;
ex = TWO*(why+zee);

  ex, why, zee都是可修改的左值( 或对象定位值 ), 它们可用于赋值运算符的左侧和右侧.

  TWO是不可改变的左值, 它只能用于赋值运算符的右侧 ( 在该例中, TWO被初始化为2,这里的=运算符表示初始化而不是赋值 ).

  42 是右值, 它不能引用指定内存位置

  (why+zee ) 是右值,该表达式不能不是特定内存位置, 而且也不能给它赋值. 它是程序计算的一个临时值,在计算完毕后便会被丢弃.

    

    

最新文章

  1. JavaScript高级程序设计学习笔记--BOM
  2. HDU 5831 Rikka with Parenthesis II (贪心) -2016杭电多校联合第8场
  3. 【12_206】Reverse Linked List
  4. 每天一个linux命令(43):lsof命令
  5. php 安装redis扩展
  6. MySQL基础之第17章 MySQL日志
  7. HDU 5842 Lweb and String
  8. 面向服务的体系结构(service-oriented architecture,SOA)
  9. Sql语句中IN等方面的用法
  10. ssis 到别的表查找临时变量值
  11. Windows 2008 卸载 IIS7 批处理
  12. .net core2.0通过entityframework访问Sqlserver数据库
  13. hasOne、hasMany、belongsTo
  14. Microsoft Tech Summit 2018 课程简述:利用 Windows 新特性开发出更好的手绘视频应用
  15. linux服务器ssh防爆破
  16. Python全栈学习_day005知识点
  17. 18. 4Sum(双指针)
  18. 利用MYSQL的加密解密办法应对三级安全等级保护
  19. js && Jquery 的回车事件
  20. 【译】第十篇 SQL Server代理使用代理帐户

热门文章

  1. 关于微信订阅号里自动回复里的a链接的问题
  2. 安装goimports
  3. AKKA Inbox收件箱
  4. 【LeetCode】在排序数组中查找元素的第一个和最后一个位置【三次二分】
  5. golang知识精要(二)
  6. Go语言【项目】 websocket消息服务
  7. Web负载均衡学习笔记之K8S内Ngnix微服务服务超时问题
  8. Java Mockito 笔记
  9. Winows上简单配置使用kafka(.net使用)
  10. C# vb .NET读取识别条形码线性条码code39