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)