作者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/cn.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