在學習編程語言中,++問題看似不復雜,但有時候也會帶我們入坑,我們看下面程序
public class Demo1 { public static void main(String[] args) { int sum1 = 0; int sum2 = 0; for (int i = 0; i<10; i++) { sum1 = sum2++; } System.out.println("sum1 = " + sum1); } }
對於明白++使用的來說,sum1=sum2++先將sum2的值賦值給sum1,然后自身加1;經過10次循環后,很快得到結果為:sum1=9
程序運行后完全沒有問題
重點來啦
public class Demo2 { public static void main(String[] args) { int sum1 = 0; for (int i = 0; i<10; i++) { sum1 = sum1++; } System.out.println("sum1 = " + sum1); } }
先看一下運行結果
不知道有沒有那么一點點懵逼?這就是++帶來的坑
拿第一次循環來說,sum1=0,對於sum1 = sum1++整個式子來說,是將sum1++整個表達式的值賦給sum1,因為后++是先操作在自加,所以其實整個sum++的值其實是0
總的來說,整個sum1=sum1++整體的操作順序如下:
1.計算sum1++的值,為0;
2.sum1自加,sum1=1;
3.將sum1++的值賦給sum1,為0;
說到這里,不知道有沒有從這個坑里走出來呢??
當然,如果是sum1=++sum1呢?自行考慮