关于i++与++i的测试
问题
上网找了找,关于i++和++i两个速度为什么有区别,大致是这么一个说法:
计算机内部实现过程有别,详细如下:
i=i+1的过程相当:
temp=i+1; i=temp;
i++的过程相当:
temp=i; i=temp+1; return temp;
++i的过程最简单:
i增1然后return i 的值,一步完成,没有给任何temp变量赋值
最早是在[http://bbs.chinaunix.net/thread-388165-1-1.html]的1楼发表。
为了验证这个问题我写了一下测试程序,分别以下用4个编译器做测试(我手里只有这几个):
javac 1.6.0_26
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
arm-none-linux-gnueabi-gcc (ctng-1.6.1) 4.4.3
mipsel-linux-gcc (GCC) 4.1.2
测试程序
Java:
public class Test{
//测试函数调用
public static void test1(){
int i=0;
System.out.println(i++);
}
public static void test2(){
int i=0;
System.out.println(++i);
}
//测试for循环
public static void test3(){
for(int i=0;i<2;i++);
}
public static void test4(){
for(int i=0;i<2;++i);
}
//测试赋值语句
public static void test5(){
int i=0,j=0;
j=i++;
}
public
… Read the rest