[問題] if判斷裡面放算式 出來答案不一樣?

作者: hunandy14 (Charlott.HonG)   2016-11-03 21:29:18
程式碼:https://goo.gl/Rzowkh
為什麼出來的 black[0] 與 black[1]
是不一樣的QQ 我想超久到底踩了什麼坑= =
#define Ratio 5.5
if (float temp = ((float)Ratio-(int)Ratio) > 0){
// cout << "b=" << temp << endl;
black[1] = 1.0 / temp;
}
這裡的的temp出來的結果是 1 是主因
為什麼QQ
另外~(float)-(int)
這種做法是否是不可預設的危險結果
(很常見到)我一直在想是不是合法的作法
作者: pttworld (批踢踢世界)   2016-11-03 21:38:00
邏輯指派至變數,只有0,非0。看編譯器。建議拆二行寫。
作者: shadow0326 (非議)   2016-11-03 21:40:00
operator precedence >先讀,再讀=
作者: stupid0319 (徵女友)   2016-11-03 21:54:00
好厲害的寫法,這樣寫去公司會不會被電啊
作者: Schottky (順風相送)   2016-11-03 22:37:00
公司喔... 比照上面的 a=a++ 辦理,你明天不用來上班了括號不用錢,多加一打不會錯
作者: pttworld (批踢踢世界)   2016-11-03 23:09:00
未測試會覺得編譯器出錯,多了型態。
作者: Caesar08 (Caesar)   2016-11-04 00:19:00
括號不用錢+1
作者: shadow0326 (非議)   2016-11-04 12:14:00
多型態是可編譯的 if (int err=foo()) 的寫法很常見
作者: noodleT (麵T)   2016-11-04 12:44:00
好的程式碼是一目了然~
作者: Ommm5566 (56天團)   2016-11-05 08:48:00
踩了白目的坑 為甚麼一堆人喜歡把程式碼寫亂好好寫似乎很難分行寫除錯器好設中斷點 寫成一行真的很白目
作者: steve1012 (steve)   2016-11-05 10:33:00
應該立版規 問之前都要試過拆行xD
作者: longlongint (華哥爾)   2016-11-05 11:41:00
to Ommm5566 舉例 有些小公司的老闆會要求寫出客戶無法自行維護的程式碼
作者: Ommm5566 (56天團)   2016-11-06 19:12:00
只要uglify再拉掉註解就好了 天下有多少人可以處理沒註解又是變數bc的程式碼做得到的人 刻意寫也是會被看穿
作者: neigence   2016-11-09 02:10:00
>的優先序 比 = 高

Links booklink

Contact Us: admin [ a t ] ucptt.com