看板 C_and_CPP 關於我們 聯絡資訊
看到一種版本求最大公因數的寫法, 但是他的迴圈看不懂 int gcd(int a, int b) { while ((a %= b) && (b %= a)) /* empty */; return a + b; } 他的 while 裡面左右都是整數, 怎麼取 AND ? 而且 while 裡面也不動作 這個程式真的能動嗎 ? -- 歷代主角: 武藤戲---神抽 城十代---強運 不動星---印卡 九十九馬---搓牌 翼神龍 效果:此卡不可特殊召喚... 神獸王 表示:同樣三祭品 我免費炸半場外加三千打點 裁龍 表示:同樣支一千 我能炸全場還不用扣血加攻 巨神兵 表示:聽說我可以特召 天空龍 表示:我現在可以捏死原作狂特召的你 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1464593129.A.088.html
a27417332: 為何不用Debugger跑跑看呢? 05/30 15:29
shadow0326: 0代表false,非0代表true囉,當然可以AND 05/30 16:00
shadow0326: 迴圈裡面也有動作啊,%=不就是動作嗎 05/30 16:00
while ((a %= b) && (b %= a)) /* empty */; 所以他把迴圈內部應該執行的動作放到判斷迴圈執行那裡 ? 只要有任何一個算出 0 就會跳出迴圈 ?
flere: 建議你在while前加上一個判斷是,a,b不為0 05/30 16:03
Leadgen: 展轉相除法 05/30 16:03
flere: 然後你的while沒有加分號 05/30 16:04
flere: 阿我眼殘..看到了XD 05/30 16:04
※ 編輯: WingedDragon (140.112.25.105), 05/30/2016 18:07:18
ilms49898723: 輾轉相除法,這樣寫要記得b不能為0 05/30 18:05
MOONRAKER: 你到底要不要自己跑跑看。 05/31 14:32
me356500: 輾轉? 06/01 21:19