bool变量与int转换问题

GKatHere 2010-02-04 11:39:12
有变量
int iA=0;
为什么用if(0==ia)判定的时候会当作假
而用if(!(bool)ia)才会当作真??
真是奇怪??
难道0==ia这个等式不成立么,成立就应该为真!
相反:int iA=1
那么if(1==ia)判定的时候会判定作什么
再如:if(2==ia)判定的时候会判定作什么??
...全文
1387 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiweifu 2010-02-05
  • 打赏
  • 举报
回复
没看明白。。标准上写的非0就是真。。具体还是看实现的
taodm 2010-02-05
  • 打赏
  • 举报
回复
楼主到底在问C问题还是C++问题?
jackyjkchen 2010-02-05
  • 打赏
  • 举报
回复
除VC和gcc之外的编译器,不要信任
job82824 2010-02-05
  • 打赏
  • 举报
回复
我觉得应该报错才对,因为定义的是iA而不是ia
所以应该出现undefined variable ia之类的提示?
huanmie_09 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 gkathere 的回复:]
有变量
int iA=0;
为什么用if(0==ia)判定的时候会当作假
而用if(!(bool)ia)才会当作真??
真是奇怪??
难道0==ia这个等式不成立么,成立就应该为真!
相反:int iA=1
那么if(1==ia)判定的时候会判定作什么
再如:if(2==ia)判定的时候会判定作什么??

[/Quote]
ia跟iA是同一个变量吧?
我也想问一下楼主的编译器,if(0==ia)判定的时候会当作假?我很怀疑。
GKatHere 2010-02-05
  • 打赏
  • 举报
回复
汗,我也搞不明白。。。单个来说,就是那样,可是在大程序中间,就会出现上面的问题,晕呀
pengzhixi 2010-02-05
  • 打赏
  • 举报
回复
LZ具体的编译器是什么,具体的代码又是什么呢
camelisi 2010-02-05
  • 打赏
  • 举报
回复
dev c++测试,0 == ia为真。
问题还没上升到 是否用了不恰当的风格进行bool值比较
if(1==ia) 肯定为假了,因为ia = 0。
if(2 == ia)也一样为假
lovesi3344 2010-02-04
  • 打赏
  • 举报
回复

所以有本书上写到编程风格的时候
说到
如果是bool型 , 应使用如下风格较好
if(!num) 表示num是假的 flase
if(num) 表示num是真的 true

如果是int型 ,应使用如下风格较好
if(num == 0) 表示num == 0
if(num != 0) 表示Num与0不相等


如果是指针 ,使用如下风格较好
if(p)
if(p == NULL)


另外,《c++ 编程风格》书上写道:“不要与true测试相等性”
flyyyri 2010-02-04
  • 打赏
  • 举报
回复
mark
febbird1984 2010-02-04
  • 打赏
  • 举报
回复
iA和ia是2个变量
int iA=0;
那么if(0==iA)等价于if(true)

难道是因为编译器原因?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧