零值比较

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)

注:错误的写法

  1. if (p == 0)         // 容易让人误解p是整型变量  
  2. if (p != 0)   
  3. if (p)                 // 容易让人误解p是bool型变量  
  4. if (!p)

bool flat和零值的比较: 

if (flag)    if(!flag )

注:根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRUE 的值究竟是什么并没有统一的标准。例如Visual C++ 将TRUE 定义为1,而Visual Basic 则将TRUE 定义为-1。所以我们不可以将布尔变量直接与TRUE、FALSE 或者1、0 进行比较。

原文地址:https://www.cnblogs.com/wangliangliang/p/3181118.html