→ firejox:因為%d呀.... 07/09 14:00
→ uranusjr:只要括弧裡面不為零, 對 if 而言就是 true 啊... 07/09 14:02
→ firejox:製造32個1 --> ~0 07/10 00:23
→ ohya0524:感謝二樓 我一直以為<=0就是false 07/10 00:41
→ angleevil:no,only zeo is false. 07/10 02:49
→ firejox:@angleevil: what's the zeo? 07/10 03:13
推 Favonia:建議用 uint_32 和 PRIu32 取代 (unsigned) int 或 %d, 07/10 04:58
→ Favonia:然後最好避免 1<<31 這種寫法,因為你也不知道 "1" 多寬 07/10 05:00
→ Favonia:如果 2^31 沒辦法由產生出來的型態表示,結果是「未定義」 07/10 05:01
→ Favonia:(結論是這個程式在你現在電腦上大概是未定義...) 07/10 05:02
→ Favonia:忠告是 (1) 用 unsigned 較安全 (2) 確定寬度才 shift 07/10 05:04
→ james732:請問上面的 (2) 要怎麼確定寬度呢? 07/10 05:07
→ james732:難不成 shift 之前都要用 sizeof 算一下? 07/10 05:08
→ Favonia:不好意思七樓我腦殘打錯了... uint_32 應該是 uint32_t 07/10 05:09
→ Favonia:@james732: 我想可以用有指定寬度的整數型態 :Q 07/10 05:10
→ Favonia:PS: 我講的「安全」是說敢宣稱符合標準的實作都無法惡搞你 07/10 05:14
→ james732:喔喔,也就是你前面推文說的 uint32_t 取代 int 囉,了解 07/10 07:12
→ firejox:應該是int32_t取代int吧...(uint32_t沒有負數)... 07/10 13:49
→ Favonia:問題是用 << 來產生 overflow 其實利用了未定義行為 :P 07/10 14:30
→ firejox:overflow嗎... 不過有時利用overflow是很方便的~~ 07/10 15:46
→ firejox:不過要用uint32_t 還得include stdint.h 就是了... 07/10 15:49
→ firejox:至少這只是在本機測的code... 07/10 15:51
→ angleevil:zeo->zero,Sorry 07/10 17:19
→ Favonia:@firejox: 對... 更麻煩的是那個 PRIuN 要 inttypes.h xD 07/10 21:58