float X与零值的比较:
if(x<0.000001&&x>-0.000001)
注:浮点数是不可以直接比较大小的,因为是非精确存储,只能设置一个精度(0.000001为允许对误差即精度),然后在允许误差内的就认为是相等的;对浮点型数比较的时候用==是不对的。
int X与零值的比较:
if(X==0) if (X!=0)
指针char *p与零值的比较:
if (NULL==p) if(NULL!=p)
注:错误的写法
- if (p == 0) // 容易让人误解p是整型变量
- if (p != 0)
- if (p) // 容易让人误解p是bool型变量
- if (!p)
bool flat和零值的比较:
if (flag) if(!flag )
注:根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRUE 的值究竟是什么并没有统一的标准。例如Visual C++ 将TRUE 定义为1,而Visual Basic 则将TRUE 定义为-1。所以我们不可以将布尔变量直接与TRUE、FALSE 或者1、0 进行比较。