查看完整版本: JAVA問題求解2
頁: [1]

1006910211 發表於 2016-6-17 05:00 PM

JAVA問題求解2


請問以下的while迴圈
(num--)有括號,照理來說應該是先做運算,在做>1的比較
可是跑出程式的結果sum為15,所以是先做比較,在做運算num--
運算子的優先順序應該是()優先於>才對,麻煩各位大大協助我的觀念釐清,謝謝

public class NewMain {

    public static void main(String[] args) {
        int num = 5;
        int sum = 0;

        do {
            sum += num;
        } while ((num--) > 1);
        System.out.println("The sum is " + sum + ", ");
    }
}

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

頭像測試01 發表於 2016-6-17 05:20 PM

你知道 --n 和 n-- 的差別嗎
n-- 的 -- 運算子優先度本來就比 > 還高
有沒有加括號是沒有影響的

foneasion 發表於 2016-6-17 08:09 PM

本帖最後由 foneasion 於 2016-6-17 08:10 PM 編輯

do while是後測式的迴圈
迴圈會先跑一輪,然後才進行迴圈的結束條件測試...

所以就算是寫了
                int num = 5;
                do {
                        System.out.println("Run!");
                } while (num==1);看起來5就不可能等於1,但是他還是會先執行一次。
所以還是會印出一次:Run!

1006910211 發表於 2016-6-17 08:44 PM

頭像測試01 發表於 2016-6-17 05:20 PM static/image/common/back.gif
你知道 --n 和 n-- 的差別嗎
n-- 的 -- 運算子優先度本來就比 > 還高
有沒有加括號是沒有影響的 ...

了解,謝謝您
--n跟n--意義我知道,不懂得在於()與>之間優先性

1006910211 發表於 2016-6-17 08:45 PM

foneasion 發表於 2016-6-17 08:09 PM static/image/common/back.gif
do while是後測式的迴圈
迴圈會先跑一輪,然後才進行迴圈的結束條件測試...



謝謝您......
了解......
{:45:}<br><br><br><br><br><div></div>

sssun1986 發表於 2016-7-1 07:35 AM

分3塊來看:
1. while跟do while的差異:
    while是先判斷,後執行。
    do while是先執行一次,才判斷。
2. ++, --這兩種increment operator的作用方法:
    放在變數前,例:++n ->先遞增或遞減,再取值。
    放在變數後,例:n--   ->先取值,再遞增或遞減。
3. 優先權:
    請參照官網說明:
    https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
頁: [1]