java中“++"的坑之(sum = sum++)問題


在學習編程語言中,++問題看似不復雜,但有時候也會帶我們入坑,我們看下面程序

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呢?自行考慮

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM