2.4.5 大有文章:变量是否为“0”

    关系运算是C++中常用的语句,常用于决定程序的流程和分支选取,其中,变量和零值的比较是应用很广,最可能出错的地方,本节的内容将帮助读者正确理解变量和零值比较的本质,写出高质量的代码。

    1.整型变量是否为0

    应当使用“==”或“!=”将整型变量直接与0进行比较。假设整型变量的名字为num,它与0比较的代码如下所示。


    num==0;//或num!=0;

    2.浮点型变量是否为0

    无论是float型还是double型变量都存在精度的限制,所以,使用浮点型变量的一个原则就是避免将浮点型变量用“==”或“!=”与数值精确比较,应该借鉴误差区间的概念,转化成“>=”或“<=”形式,假设浮点型变量的名字为num,下面这种写法是存在隐患的。


    num==0.0;正确的写法如下所示。 ((num<=delta)&&(num>=-delta));

    其中,delta是允许的误差范围,如0.000001等。

    注意

    该方法不仅仅适用于浮点型变量和0的比较,与其他数值的比较同样如此。

    3.bool类型不用比较

    bool类型本身只有true和false两种取值,在进行判断时,不用与0或1进行比较。

    假设bool型变量名字为isOK,判断其是否为真的标准语句如下所示。


    if(isOK){……}//或if(!isOK)不推荐下列写法。 if(isOK==1);//或if(isOK==0);