[問題] 關於 while 迴圈

看板C_and_CPP (C/C++)作者 (林佳)時間14年前 (2011/10/20 23:16), 編輯推噓4(409)
留言13則, 4人參與, 最新討論串1/1
下面的code 是求最大公因數 #include<iostream> #include<algorithm> using namespace std; int main() { int a, b; printf("輸入兩個數求最大公因數\n請輸入第一個正整數:"); scanf(" %d", &a); printf("請輸入第二個正整數:"); scanf(" %d", &b); if(a < b) swap(a, b); while((a %= b) && (b %= a)); printf("最大公因數是:%d\n",a + b); return 0; } 其中 while那行實在是看不懂 他不是判斷(a %= b) && (b %= a) 但 他判斷完之後 有執行什麼嗎? 直接接 ";" 不會 無窮迴圈嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.135.26.99

10/20 23:18, , 1F
當兩個有一邊為零就會結束了阿
10/20 23:18, 1F

10/20 23:18, , 2F
展轉相除法
10/20 23:18, 2F

10/20 23:20, , 3F
所以while ()內的 不是判斷 而是做嗎?
10/20 23:20, 3F

10/20 23:21, , 4F
對阿 先做了再說(?
10/20 23:21, 4F

10/20 23:21, , 5F
做的同時判斷
10/20 23:21, 5F

10/20 23:22, , 6F
詳細的判斷順序要看編譯器如何決定
10/20 23:22, 6F

10/20 23:22, , 7F
%= operator很明確,有什麼疑問嗎
10/20 23:22, 7F

10/20 23:23, , 8F
程式就一行一行下來的要怎麼同時 難不成是多執行緒(驚
10/20 23:23, 8F

10/20 23:24, , 9F
懂了 謝謝 他會一直在()內弄到出迴圈為止
10/20 23:24, 9F

10/20 23:24, , 10F
我的意思是說出來零while就結束了
10/20 23:24, 10F

10/20 23:27, , 11F
動作是直接寫在條件式而不是循環主體
10/20 23:27, 11F

10/20 23:27, , 12F
所以我才說是一起
10/20 23:27, 12F

10/20 23:41, , 13F
其實short circuit可以決定順序...
10/20 23:41, 13F
文章代碼(AID): #1Ee3jaM4 (C_and_CPP)
文章代碼(AID): #1Ee3jaM4 (C_and_CPP)