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