看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《keler897 (職業洗的)》之銘言: : int gcd(int a,int b,int c) : { : int d; : for(d=a;a%d==0&&b%d==0&&c%d==0;d--) : return d; : } 先看一下這段程式碼 for迴圈的結構:for(初始值;結束條件;變數更新) 結束條件那邊通常會放一個邏輯判斷句 (如原PO寫的 a%d==0&&b%d==0&&c%d==0 ) 當這個判斷句的條件成立時,迴圈會繼續跑;條件不成立時迴圈會中止 for(d=a;a%d==0&&b%d==0&&c%d==0;d--) 這樣寫的話,這段程式碼會做的事是: (1)初始化變數d的值,讓它與a相等 (2)判斷 a%d b%d c%d 三個值是不是都等於0。 (3)如果a%d b%d c%d都等於0,則d的值減1,然後回到步驟(2) 如果不是,則跳出迴圈(d的值不變) 這樣剛好和原PO想要做的事相反 另外 for(d=a;a%d==0&&b%d==0&&c%d==0;d--) return d; return d;直接接在for迴圈的後面,則"return d;"也會被當成for迴圈裡面的一部份 如果for迴圈裡面沒有要做其他的事的話,後面要加個分號 for(d=a;a%d==0&&b%d==0&&c%d==0;d--); for(d=a;a%d==0&&b%d==0&&c%d==0;d--) ; 這兩種種寫法都可以 (我個人偏好後者,比較不容易漏看分號) -- ∫work dt = success -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.238.124
keler897:感謝大大這麼詳細的回答 我了解了!!! 11/08 12:35
VictorTom:其實for中間那個嚴格來說是"繼續跑迴圈的條件", 另外, 11/08 14:59
VictorTom:就算是第一輪要跑也會check那個條件, 所以以下這個例子 11/08 14:59
VictorTom:for(i=1;i<1;++i); 這個for一次都不會跑.... 11/08 14:59
tw00088437:斷 11/08 15:00
tw00088437:斷太慢了 Orz 11/08 15:00