作者hunandy14 (Charlott.HonG)
看板C_and_CPP
標題[問題] if判斷裡面放算式 出來答案不一樣?
時間Thu Nov 3 21:29:18 2016
程式碼:
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)
這種做法是否是不可預設的危險結果
(很常見到)我一直在想是不是合法的作法
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.173.155.186
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1478179760.A.7A0.html
1F:→ pttworld: 邏輯指派至變數,只有0,非0。看編譯器。建議拆二行寫。 11/03 21:38
好~~
2F:→ shadow0326: operator precedence >先讀,再讀= 11/03 21:40
原來如此!!!!那個1是布林QuQ
3F:推 stupid0319: 好厲害的寫法,這樣寫去公司會不會被電啊 11/03 21:54
好說好說((摀臉
4F:→ Schottky: 公司喔... 比照上面的 a=a++ 辦理,你明天不用來上班了 11/03 22:37
嗚嗚我知道錯惹~
5F:→ Schottky: 括號不用錢,多加一打不會錯 11/03 22:38
6F:→ pttworld: 未測試會覺得編譯器出錯,多了型態。 11/03 23:09
我用的版本是
gcc version 5.3.0
g++ -Wall -std=c++0x
沒出現警告與錯誤~
7F:→ Caesar08: 括號不用錢+1 11/04 00:19
我會好好用的QQ
> -------------------------------------------------------
感謝各位的協助~~
※ 編輯: hunandy14 (218.173.155.186), 11/04/2016 01:06:58
8F:→ shadow0326: 多型態是可編譯的 if (int err=foo()) 的寫法很常見 11/04 12:14
9F:推 noodleT: 好的程式碼是一目了然~ 11/04 12:44
10F:推 Ommm5566: 踩了白目的坑 為甚麼一堆人喜歡把程式碼寫亂 11/05 08:48
11F:→ Ommm5566: 好好寫似乎很難 11/05 08:49
12F:→ Ommm5566: 分行寫除錯器好設中斷點 寫成一行真的很白目 11/05 08:51
13F:推 steve1012: 應該立版規 問之前都要試過拆行xD 11/05 10:33
等等這個我要喊冤~~~
我知道拆行沒問題,確實原本的我是寫了 A, B, C 三個例子
C 就是分行打~我知道應該要分行打一目了然~~
只是後來覺得C好像不太重要就拿掉了,盡可能節省各位的時間
我只是不懂我到底採了什麼坑,怎麼形容呢
就是一個坑在那裏,我知道怎麼躲可是我就是想知道
為什麼他是個坑,不知道這樣有沒有說清楚了QuQ
阿...這好像也可以用白目、刻意去採坑形容XDD
14F:推 longlongint: to Ommm5566 舉例 有些小公司的老闆會要求寫出客戶 11/05 11:41
15F:→ longlongint: 無法自行維護的程式碼 11/05 11:41
了解~~
※ 編輯: hunandy14 (218.173.155.186), 11/05/2016 15:04:55
16F:推 Ommm5566: 只要uglify再拉掉註解就好了 天下有多少人可以 11/06 19:12
17F:→ Ommm5566: 處理沒註解又是變數bc的程式碼 11/06 19:13
18F:→ Ommm5566: 做得到的人 刻意寫也是會被看穿 11/06 19:13
19F:推 neigence: >的優先序 比 = 高 11/09 02:10