C++和java中的i++和++i(转)
C++和java中的i++和++i
(2012-04-11 21:04:53)
1、C++和java中的++运算
JAVA:
public class Test { public static void main(String args[]) { int i,j; i=0; for(j=0;j<5;j++){ i=i++; System.out.println("i="+i); } } }
C++:
#include<iostream>
using namespace std; void main() { inti,j; i=0; for(j=0;j<5;j++) { i=i++; cout<<i<<endl;
} }
第一个JAVA程序得出的结果如下:
i=0
i=0
i=0
i=0
i=0
而第二个C程序得出的结果如下:
i=1
i=2
i=3
i=4
i=5
原因何在?
2、java的++
java的编译器在遇到 i++和i--的时候会重新为变量运算分配一块内存空间,以存放原始的值,而在完成了赋值运算之后,将这块内存释放掉,下面首先看一下如果是j=i++的情况:
i的原始值存放在后开辟的内存中,最后这个值将赋值给j,这样j=i++后,j就会得到i的值,而i又将自加,所以,在释放内存之后,原来存放 j和i的地方将得到值将是:j(此时的值等于初始i值)和i(i自加后的值)。明白了上面的问题,让我们接下来看看i=i++的情况:
3、C++中的++ C++中 i++是在执行完整句语句之后再执行的,如int i=0; int j = i++ + i++; 结果是j=0
而java中 int i=0;int j = i++ + i++; 结果是j=2
浙公网安备 33010602011771号