C语言 -- 不同类型变量与零值进行比较

  我们都知道,在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赋值的情况。