黑马程序员技术交流社区

标题: c语言中左值和右值的问题,这里面哪个是左值哪个是右值? [打印本页]

作者: atlas    时间: 2014-10-17 15:25
标题: c语言中左值和右值的问题,这里面哪个是左值哪个是右值?
本帖最后由 atlas 于 2014-10-17 15:25 编辑
  1. int a = 112,b=-1;
  2. float c = 3.14;
  3. int *d = &a;
  4. float *e = &c;
复制代码

AG76}(C2}8()%_DT(DXYT6V.png (13.74 KB, 下载次数: 95)

AG76}(C2}8()%_DT(DXYT6V.png

作者: 微笑凡    时间: 2014-10-17 16:16
C/C++语言中可以放在赋值符号左边的变量,左值表示存储在计算机内存的对象,左值相当于地址值。右值:当一个符号或者常量放在操作符右边的时候,计算机就读取他们的“右值”,也就是其代表的真实值,右值相当于数据值
作者: 微笑凡    时间: 2014-10-17 16:17
微笑凡 发表于 2014-10-17 16:16
C/C++语言中可以放在赋值符号左边的变量,左值表示存储在计算机内存的对象,左值相当于地址值。右值:当一 ...

比如: int ia,ib;
ib=0;
ia=ib;
在这里,首先定义ia,ib。然后对ib赋值,此时计算机取ib的左值,也就是这个符号代表的内存位置即内存地址值,计算机取0的右值,也就是数值0;然后给ia赋值为ib,此时取ib的右值给ia的左值;
所以说,ib的左值、右值是根据他的位置来说的;
作者: atlas    时间: 2014-10-17 16:31
微笑凡 发表于 2014-10-17 16:17
比如: int ia,ib;
ib=0;
ia=ib;

那你给我解释一下这道题:
int a;
int *d = &a;

下面两条语句哪个是对的,哪个是错的,为什么?
*d = 10 - *d;
d = 10 - *d;
作者: 微笑凡    时间: 2014-10-17 16:44
atlas 发表于 2014-10-17 16:31
那你给我解释一下这道题:
int a;
int *d = &a;

取a的地址给指针d....


作者: atlas    时间: 2014-10-17 16:48
微笑凡 发表于 2014-10-17 16:44
取a的地址给指针d....

第二个呢?
作者: 微笑凡    时间: 2014-10-17 17:03
atlas 发表于 2014-10-17 16:48
第二个呢?

图片上已经显示了,你看看在回,行不行?
作者: 米匠    时间: 2014-10-17 20:38
左值右值?视频中有讲吗?我没全看,,,跳着看的,,,请问这是哪章的视频啊?
作者: atlas    时间: 2014-10-17 21:59
米匠 发表于 2014-10-17 20:38
左值右值?视频中有讲吗?我没全看,,,跳着看的,,,请问这是哪章的视频啊? ...

这个是我从网上看的,不知道视频中有没有涉及。
作者: atlas    时间: 2014-10-17 22:00
微笑凡 发表于 2014-10-17 17:03
图片上已经显示了,你看看在回,行不行?

sorry,我看了半天就一个6,我真的没看到第二个运行结果。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2