在我们日常编程中,经常可以遇到各种类型与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)