→ MOONRAKER:不是,是判斷是否為0。(差別很大喔!) 11/25 02:23
推 joefaq:其實!a 如果不是bool的話 其實是不好的寫法 11/25 03:40
推 twotwoone:怎麼說呢?請教一下,哪種寫法的 !a 可能會有問題 11/25 04:04
推 iwayne:如果a不是bool的型別,那a與!a就不只有0,1兩種情況, 11/25 08:17
→ iwayne:所以可能容易引起邏輯上的誤判。j大應該是這樣的意思吧. 11/25 08:18
推 ledia:可以告訴我如何讓 !a 不是 0 或 1 嗎? 11/25 08:37
推 lwecloud:應該講0或非0吧? 11/25 09:01
推 twotwoone:if()對於條件成立與否(true or false),應該只是看是否 11/25 09:40
→ twotwoone:裡面的的值為0。而根據VC顯示反組譯碼,!a就只會傳回1,0 11/25 09:40
→ twotwoone:當然不考慮運算子被 overloaded 的特殊情況 11/25 09:41
推 VictorTom:推221大的說明:) 小弟記得以前好像也在裡推過.... 11/25 09:58
→ VictorTom:其實bool也只是一個數, 型態可能等於uchar, 值為0或1. 11/25 09:59
→ VictorTom:判斷條件0->false, 非0->true; 結果false->0, true->1 . 11/25 10:00
→ VictorTom:if(!a)其實相當於把上面的過程各跑了一兩次這樣@_@" 11/25 10:02
→ VictorTom:不過聰明的compiler可能可以只翻出更精簡的指令吧:) 11/25 10:04
→ realmeat:c是沒boolean型態 if內只判斷0跟非0 11/25 10:08
→ kikiqqp:! 就反轉 真為假 假為真 11/25 13:05
推 pichubaby:如果我說可以代換成"0==" 這樣的話正確嗎? 11/25 17:41