C/C++:int、bool、float、ptr 与 0 的比较

1. int 与 0 比较

if(x == 0)             推荐写法,暗示x为整形数值,整形数值比较
if(!x)

2. bool 与 0 比较:

if(x == 0)
if(x == false)
if(!x)                        推荐写法,暗示x为bool类型,真假判断

在逻辑上,上面三个都是正确的,而且都可以编译通过。 但是,

(1)第一种写法,会让人误以为 x 是整型变量,因为这种写法 x 可以与 0 在数值上进行比较,也可以与其他整型比较,明显暗示了 x 是一个整型变量,或者没法让别人一眼看出来 x 是一个 bool 型变量。

(2)第二种写法,true 值并不确定,并且有的环境是大写 TRUE。VC++ 中 true 的值1,VB中 true 的值是 -1。所以任何比较都不建议与 true 或者 false 进行比较。

(3)第三种,if(x),if(!x),是推荐的广为认可的,对bool型变量与零值进行比较的方法。

3. float 与 0 比较

        浮点型变量与任何数比较的时候,都不可以直接比较,因为浮点数是一种不精确的储存方式。比较之前首先要设置比较的精度值,是一个常量。

(1) if(x == 0)                错,不可这样比较!!!


(2) 设定精度

    const float epsinon= 0.00001;        //非常小的数作为精度

    if( (x >= -epsinon) && (x <= epsinon) )

4. ptr 与 0 比较

       将 0 变为 nullptr ,再与指针变量 x 比较。

if(x == 0)
if(x == nullptr)          推荐写法,清晰,可以清晰表明x是指针类型
if(x)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值