看板 C_and_CPP 關於我們 聯絡資訊
Int s; while(~~~~){ if(s){printf(",")} else{s=1} } 小弟不太懂,這邊的if(s)是在判定什麼 跑這while 迴圈時第一次會跑去else,之後每次都會跑去printf那裏 請各位鞭小力一點>< -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.137.232.45 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1488602716.A.558.html
jerryh001: 會把s轉型成bool 如果0會變false 其他變true03/04 12:54
tuyutd0505: if內放int->非0為true03/04 12:55
原來轉成bool,這樣懂了,感謝樓上兩位 ※ 編輯: groot3 (114.137.232.45), 03/04/2017 12:58:34 ※ 編輯: groot3 (1.161.230.132), 03/04/2017 13:45:56
MOONRAKER: 轉成book…是不是獵人看太多 :| 03/04 14:06
TobyH4cker: C有bool嗎'@@ 03/04 17:29
CoNsTaR: 其實放 if 裡面是 bool 會被轉成 int 吧... 03/04 17:30
CoNsTaR: 任何型別的值放 if 裡面會被轉成 int 判斷是否不為零 03/04 17:32
asd456fgh778: 樓上這樣的話是否能說NULL等於0 03/04 17:34
CoNsTaR: 可是 NULL 和 0 型別就不同了耶 03/04 17:36
CoNsTaR: 應該可以說轉型後相同吧 03/04 17:40
LPH66: NULL 其實是個很有趣的東西 03/04 18:10
LPH66: 版上的 C 語言常見誤解對此有詳細說明, 可以去看看 03/04 18:10
LPH66: 簡單說就是 NULL 和 0 之間的關係沒有你想的那麼單純 03/04 18:12
LPH66: 然後 C++ 還有 nullptr, 這個也請看版上講空指標常數那一篇 03/04 18:14
asd456fgh778: 原來如此 感謝各位 03/04 18:20
LPH66: 剛才找了一下跟 if 相關的東西, 我的印象沒錯 03/05 04:00
LPH66: C 的 if() 裡面是當做數值, 概念上等同於多寫一個 != 0 03/05 04:01
LPH66: 這也是因為 C 語言沒有單獨的布林值, 所有判斷式都是 int 03/05 04:01
LPH66: 判斷條件成立則結果為整數 1, 不成立則為整數 0 03/05 04:02
LPH66: 但 C++ 由於有獨立的 bool 型態, if() 裡面是轉成 bool 03/05 04:03
LPH66: 再看它究竟是 true 還是 false 決定 03/05 04:03
LPH66: 所以 if(s) 在 C 約等同於 if(s!=0) 03/05 04:04
LPH66: 但在 C++ 是約等同於 if((bool)s) 03/05 04:04
TobyH4cker: 度ㄉ所以才會有if(!strcmp)這樣寫法 03/05 22:06