if后的判断条件

转自https://blog.csdn.net/lxn18392641463/article/details/78321080

先说明原因。这里不只是有代码规范的问题,还有汇编语言的问题,要知道为什么,别认为是自己代码习惯不好。慢就是错,

比如这里提到的

一、BOOL与0值得比较

规则:不可将BOOL型变量直接与TRUE,FALSE,1,0比较。

根据BOOL型变量的定义,零值为假(记为FALSE),非零值都为真。

假设BOOL型变量名为flag,它与零值比较的标准If语句为:

if(flag)//表示flag为真,

if(!flag)//表示flag为假

其他的都属于不良风格:

if(flag == TRUE)

if(flag == FALSE)

if(flag == 0)

if(flag == 1)
因为这些不良风格,都运行的汇编语言次数比if(flag)多。

if(flag == TRUE),至少运行了flag的替换值,TRUE的替换数字,然后==判断。==判断后返回真假值,然后才给if了判断条件

=========================================================================================================

一、BOOL与0值得比较

规则:不可将BOOL型变量直接与TRUE,FALSE,1,0比较。

根据BOOL型变量的定义,零值为假(记为FALSE),非零值都为真。

假设BOOL型变量名为flag,它与零值比较的标准If语句为:

if(flag)//表示flag为真,

if(!flag)//表示flag为假

其他的都属于不良风格:

if(flag == TRUE)

if(flag == FALSE)

if(flag == 0)

if(flag == 1)

二,int 与0值比较

规则:应当将整型变量用==或者!=直接与0比较

假设整型变量的名字是value,与0值比较的标准if 语句是

if(valye == 0)

或者if(value != 0)

不可模仿BOOL型变量写成如下形式:

if(value)或者if(!value)这样会让别人以为是BOOL类型的变量

三、浮点变量与0值的比较:

无论是float还是double类型的变量它都有精度限制,所以一定要避免将浮点变量与数值进行比较,

一定得转化为>=或者<=形式进行比较。

假设浮点的变量是x,

#define EPSINON = 0.000001

应该转化为if((x >= -EPSINON) && (x<= EPSINON)),其中EPSINON是实现规定的精度。

不可以直接if(x == 0.0)

四、指针变量与0值的比较;

假设指针变量为p

虽然指针空(NULL)值是0,但是与0的意义是不一样的。它与0值比较的标准if语句如下:

if(p == NULL)

if(p != NULL)

不能写成:

if(p == 0)或者if(p != 0)这会让人误以为是整型变量

if(p)或者if(!p)这会让人误以为BOOL类型变量

原文地址:https://www.cnblogs.com/XiHua/p/12058242.html