在我们日常编程中,经常可以遇到各种类型与0比较的情况,很多情况下我们运用的都不是那么恰当,比如说float a 与0比较的时候,有一部分程序员(包括我)会直接写if(0.0 == a)这样写一般情况下不会出下什么太大的问题,不过还是很有隐患的。
下面我们来总结一下各种类型与0值比较的情况,希望大家以后能够规范自己的代码风格,提高自己的编码质量。
类型一:布尔值 bool 与 0 值比较
bool flag = true; if ( flag ) //true if ( !flag ) // false
类型二: 整形 int short long
int flag = 1; if ( flag == 0 ) if ( flag != 0 )
类型三:浮点型 float double
#define EPSILON 0.000000000001; float flag = 1.0; if ( flag < EPSILON && flag > -EPSILON)
这里引申一下,两个浮点类型的数值判断是否相等怎么办?
#define EPSILON 0.000000000001; float flag1 = 1.0; float flag2 = 2.1; if ( abs(flag1 - flag2) < EPSILON) && abs(flag1 - flag2) > -EPSILON)
类型四:指针
int *ptr = new int(5); if ( ptr == NULL ) if ( ptr != NULL)