学校首页  教务选课  本站首页  计算中心简介  部门工作  对外交流  C语言学习  大学计算机  PAT考试  咨询与投诉 
 首页 > C语言学习 > C语言学习讨论 > 正文 更多C语言学习讨论
C语言中的左值与右值

2013年07月01日15:34  来源:计算中心  访问量:16209

  C/C++语言中可以放在赋值符号左边的变量,即具有对应的可以由用户访问的存储单元,并且能够由用户去改变其值的量。左值表示存储在计算机内存的对象,而不是常量或计算的结果。或者说左值是代表一个内存地址值,并且通过这个内存地址,就可以对内存进行读并且写(主要是能写)操作;这也就是为什么左值可以被赋值的原因了。相对应的还有右值:当一个符号或者常量放在操作符右边的时候,计算机就读取他们的“右值”,也就是其代表的真实值。简单来说就是,左值相当于地址值,右值相当于数据值。右值指的是引用了一个存储在某个内存地址里的数据。

  比如: int ia, ib;
  ib = 0;
  ia = ib;

  在这里,首先定义ia,ib。然后对ib赋值,此时计算机取ib的左值,也就是这个符号代表的内存位置即内存地址值,计算机取0的右值,也就是数值0;然后给ia赋值为ib,此时取ib的右值给ia的左值;

  所以说,ib的左值、右值是根据他的位置来说的;

  这也算是形式语言的一个有意思之处吧。

  注意:左值右值翻译可能有些问题
  L-value中的L指的是Location,表示可寻址。Avalue (computer science)that has an address.
  R-value中的R指的是Read,表示可读。in computer science, a value that does not have an address in a computer language.

  左值和右值是相对于赋值表达式而言的。左值是能出现在赋值表达式左边的表达式。左值表达式不但具有空间实体,还具有读写访问权。右值是可以出现在赋值表达式右边的表达式,他可以是不占据内存空间的临时量或字面量,可以使(还是《是》)不具有写入权的空间实体。如

  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是字面量不能做左值


 前一条:C语言中return和exit的区别 (2012-11-24)
 后一条:计算中心实验室(机房)全天候向您免费开放,欢迎您到计算中心用机 (2011-04-18)
相关报道
·C/C++ 误区一:void main() (2011-05-19)
·C语言程序设计上机练习技巧、学习方法与注意事项 (2011-04-20)
·为什么在自己的计算机上程序可以运行,传到系统却说编译有错?——系统对C程… (2011-12-19)
·为什么在自己的计算机上程序的运行结果是对的,但传到系统却未得满分甚至是0… (2011-12-16)
·为什么同一程序使用不同的帐号上传到系统后得分不一样? (2011-12-16)
·2012—2013学年第2学期《C语言程序设计》正修与重修之考试试题与成绩组成说明 (2013-06-08)

 

◆ MOOC+SPOC

C语言程序设计MOOC
Office高级应用MOOC
大学计算机MOOC(56学时)
大学计算机MOOC(32学时)

◆ 英语工具(*=机房开放)

离线词典:有道词典(绿色版)
离线翻译:金山快译(绿色版)
* 谷歌翻译
* 百度词典/翻译/论文写作助手
* 金山词霸/翻译/写作批改
必应词典/翻译
有道词典/翻译/简历助手

◆ 重要公告

成都信息工程大学关于组织报…
DSA数据结构与算法实验室在2…
2024年度DSA数据结构与算法…
2024 年(第17届)中国大学…
2023-2024学年第2学期《Offi…
第三届“成都信息工程大学团…
20232学期非计算机类《C语言…
第二届成都信息工程大学新生…
第十五届蓝桥杯全国软件和信…
20231学期非计算机类《C语言…

◆ 校园热线

教学平台 数字图书 招生就业
学生事务 心灵之约 邮件服务
后勤管理
四川·成都市西南航空港经济开发区学府路一段24号  邮编:610225
学校值班电话:028-85966502     联系计算中心:电话028-85966005  电子邮件  留言
Copyright©成都信息工程大学计算中心 2008-2011  建议使用IE5.5,1024*768以上浏览