學習過一門計算機語言的人一定知道j=i++的運算結果,整個表達式的值爲i,而i的值變爲i+1;那麼i=i++又是一個什麼情況呢?下面分別用java 和 c 兩種語言來做個測試: <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
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<stdio.h>
main(){
inti,j;
i=0;
for(j=0;j<5;j++){
i=i++;
printf("i=%d/n",i);
}
}
你也許會問,這麼簡單的程序會有什麼問題呢?是的,如果不相信的話,你可以運行一下這兩個程序,得到的結果非常讓人震驚。第一個JAVA程序得出的結果如下:
i=0
i=0
i=0
i=0
i=0
而第二個C程序得出的結果如下:
i=1
i=2
i=3
i=4
i=5
所以這樣最後一次循環內的結果仍舊是i(即0)。
而C語言中的i=i++就只是完成i++的內容,所以結論會不同。這種情況說明java和c的處理語法的機制不同,如果在程序中只輸入i++就不會出現這個方面的問題,所以大家在以後的程序中如果使用到i=i++的時候要格外小心,一般只需要用i++就不會有問題了。