我们都知道,在if语句中,要经过逻辑判断,以决定程序的走向。然而不同类型的变量,与零值进行比较时,一般也要遵循某些“准则”。
1.对于bool型变量
对于bool型变量来说,它的逻辑值只有两种,TRUE和FALSE。C语言中将非零值定义为了TRUE,0定义为FALSE。
但是对于有些编译器来讲,TURE有可能等于1,也可能等于-1。
因此,显然if(Bool == 1)或者if(Bool == TRUE)这样的形式都不太好
应该选择if(BOOL)的形式来判断bool型变量。
2.对于浮点型(float)变量
因为对于浮点型变量都是有精度限制的,所以不能够用==来判断两个浮点型变量是否相等。
比较普遍的做法是,判断的两个变量做差,然后和精度相比较
eg. if(val1 <= EPSINON && val1 >= -EPSINON),其中,EPSINON为判断的精度
3.指针变量
对于指针变量,零值(即空指针)在编译器中一般都会被定义为NULL。
因此判断指针变量是否为空,一般的写法是if(NULL == P)
把NULL放在前面的目的是防止出现p = NULL赋值的情况。