zoukankan      html  css  js  c++  java
  • 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类型变量

  • 相关阅读:
    2016"百度之星"
    codeforces 55 div2 C.Title 模拟
    codeforces 98 div2 C.History 水题
    codeforces 97 div2 C.Replacement 水题
    codeforces 200 div2 C. Rational Resistance 思路题
    bzoj 2226 LCMSum 欧拉函数
    hdu 1163 九余数定理
    51nod 1225 余数的和 数学
    bzoj 2818 gcd 线性欧拉函数
    Codeforces Round #332 (Div. 2)D. Spongebob and Squares 数学
  • 原文地址:https://www.cnblogs.com/XiHua/p/12058242.html
Copyright © 2011-2022 走看看