a++ 和++a做左值得区别
来源:互联网 发布:淘宝宝贝刷收藏有用吗 编辑:程序博客网 时间:2024/06/05 12:39
a++和++a在做左值的时候有不同,那么左值它首先必须是有特定地址的才能作为左值,否则赋值就没有具体对象。再看看a++和++a。a++的意思是先复制一份临时数据出来参与周边环境的运算,再自加变量a,可见a++用来参与运算的是一份复制出来的临时数据,这个数据是临时存在而没有固定地址的,不是一个真正的变量。++a的意思是先自加变量a,再将变量放到周边环境参与运算,那么++a用来参与运算的是有具体地址的变量,所以++a是可以作为左值使用的。
int a=4;
a+=(a++); 9
a+=(++a);10
(a++)+=a;出错
(++a)+=(a++);
A: a+=(a++) 先计算a++ ,因为a为后++,所以a为4,然后a += 4,这时a的值改为5,4+5=9;
B: a+=(++a) 先计算++a,因为a为前++, 所以a为5,然后a += 5, 这时a的值改为5,5+5=10;
C::(a++) += a 这个是错误的。因为左值只能变量,(a++)是后++, 所以a不会先计算a++,而a个数值4。所以会报错。
D:(++a) +=(a++) 先计算++a,a的值为5,然后再去计算a +=(a++) ,同样。先计算a++,因为a为后++,所以a的值为5,然后计算a += 5这时a的值为6。所以为11;
阅读全文
0 0
- a++ 和++a做左值得区别
- a++和++a左值问题
- a++和++a可不可以作为左值
- 左值和右值的区别(以a++和++a为例)
- MATLAB中a./b与a/b的区别以及左除和右除
- MATLAB中a./b与a/b的区别以及左除和右除
- (++a)+=(a++)和(++a)=(++a)+(a++)的区别
- (++a)+=(a++)和(++a)=(++a)+(a++)的区别
- A a和A *a = new A()区别
- 左值,右值 及(++a)+=(a++)和(++a)=(++a)+(a++)计算
- *a++和(*a)++区别 注意!!!
- a 和&a的区别
- a和&a的区别
- a 和&a 的区别
- a++和++a的区别
- a和&a的区别
- a和&a的区别
- a和&a的区别
- docker学习笔记(一)
- ubuntu16.04离线安装NIVIDIA驱动
- PCB孔铜厚度标准及成品铜厚构成、由来
- 1196---排序问题
- 如何轻松搭建本地PHP环境
- a++ 和++a做左值得区别
- Android零基础入门第9节:Android应用实战,不懂代码也可以开发
- 开篇-总结
- Java Source Attacher插件(Eclipse自动下载jar) | QiuRiMangCao
- ExecutorCompletionService 源码分析
- Kettle之【执行SQL脚本】控件用法
- json.stringfy()和json.parse()的区别!
- ROC、K-S,教你巧妙使用模型评价指标
- Java虚拟机:JVM内存分代策略