i++和++i的真正区别
来源:互联网 发布:苏州医疗网络推广外包 编辑:程序博客网 时间:2024/06/08 03:19
记得刚开始学编程的时候还是从c语言开始的,还是看的谭浩强写的那本书,上面对介绍i++和++i的区别如下:
i++是先赋值,然后再自增;++i是先自增,后赋值。
用代码表示就是:
若 a = i++; 则等价于 a=i;i=i+1;
而 a = ++; 则等价于 i=i+1;a=i;那么事实真是这样么,只是曾经我深信不疑,但是直到我看到下面这段代码:
@Testpublic void test(){ int i = 0; i=i++; System.out.println(i);}
如果按原先定义,就应该是i=i;i=i+1; 那么结果就应该是1;但是很遗憾结果是0;所以得知原先定义有误,至少是不准确的。
那么真实的机制是怎么样的呢?我简单用代码模拟如下真实流程:
int i;@Testpublic void testAddI() { i = 0; i = lastAdd(); System.out.println(i); i = 0; i = firstAdd(); System.out.println(i);}//模拟i++的机制public int lastAdd() { //操作i前对其值保留副本 int temp = i; i = i + 1; //返回副本 return temp;}//模拟++i的机制public int firstAdd() { i = i + 1; return i;}
输出结果为0和1,和i=i++以及i=++i的结果一致。
结论:在java的执行过程中,i++和++i都直接对i进行了i=i+1的操作,但是不同的是i++得到的是i未进行加法操作的前的值的副本,而++i直接得到计算后的值。
阅读全文
0 0
- i++和++i的真正区别
- i++和++i的区别
- "i++"和"++i"的区别
- ++i 和 i++ 的区别
- i++和++i的区别
- i++和++i的区别
- i++和++i的区别
- i++和++i的区别
- i++和++i的区别
- i++和++i的区别
- ++i和i++的区别
- i++和++i的区别
- ++i和i++的区别
- i++和++i的区别
- i++和++i的区别
- ++i和i++的区别
- i++和++i的区别
- i++和++i的区别
- Linux安装ftp组件
- 构建工具-Maven简介-1
- java httpURL连接远程服务器并返回数据(httpurlconnection)
- ubuntu解压指令
- 用Construct2做第一个小游戏
- i++和++i的真正区别
- hdu 4545 魔法串
- 简单查询
- 浮动和清浮动,内外边距和margin的坑
- 作业2
- 总结几个实用的JQuery全局工具函数
- Excel奇偶列分列
- angularjs表单验证
- Bootstrap标签