转自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类型变量

if后的判断条件的更多相关文章

  1. wait()方法写在while循环中可以在线程接到通知后再一次判断条件

    wait()方法写在while循环中可以在线程接到通知后再一次判断条件 synchronized public String pop() { String returnValue = "&q ...

  2. MyBatis 判断条件为等于的问题

    在用MyBatis操作数据库的时候相信很多人都用到,当在判断null, 大于,大于等于,小于,小于等于,不等于时估计很多都用到,比较容易实现了,这里就省略了,但唯独判断条件为等于时估计蛮多人遇到坑了, ...

  3. yii2-验证规则,rules,判断条件

    yii2模型的验证规则,简单的使用我就不详细说了,想看的可以去看官网教程http://www.yiichina.com/doc/guide/2.0/structure-models#validatio ...

  4. shell中条件判断语法与判断条件小结

    1. IF条件判断语法: if Athen   dosthelif B   dosthelse   dosthfi 2. 判断条件:   2.1 字符串判断   str1 = str2 当两个串有相同 ...

  5. shell 脚本——判断条件

    在之前的shell语言学习笔记中已经写过shell的几种判断语句及循环语句,也简单的介绍了shell语言判断语句和判断条件.在此再做进一步学习. test命令的测试功能 test命令用于检测系统文件及 ...

  6. Linux if 命令判断条件总结

    Linux if 命令判断条件总结Linux if命令 关于文件属性的判断式 -a 如果文件存在 -b 如果文件存在,且该文件是区域设备文件 -c 当file存在并且是字符设备文件时返回真 -d 当p ...

  7. MySQL使用时间作为判断条件

    背景:在开发过程中,我们经常需要根据时间作为判断条件来查询数据,例如:当月,当日,当前小时,几天内...... 1. 当月 我们只需要使用一个mysql的MONTH(date)函数即可实现.(注意判断 ...

  8. if语句中的判断条件(nginx)

    if语句中的判断条件   正则表达式匹配:     ==:等值比较;     ~:与指定正则表达式模式匹配时返回"真",判断匹配与否时区分字符大小写:     ~*:与指定正则表达 ...

  9. ThinkPHP3.2中if判断条件是两个变量

    <select name="typeId"> <foreach name="typeInfo" item="v"> ...

随机推荐

  1. 实战远程文件同步(Remote File Sync)

    1. 远程文件同步的常见方式: 1.cron + rsync 优点: 简单 缺点:定时执行,实时性比较差:另外,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚 ...

  2. JAVA中循环遍历list有三种方式

    转自:https://blog.csdn.net/changjizhi1212/article/details/81036509JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常 ...

  3. 【洛谷 P2597】 [ZJOI2012]灾难(LCA)

    题目链接 考虑建一棵树,使一个生物灭绝时他的子树都会灭绝,显然这样答案就是以每个点为根的子树大小-1. 为什么原图不是一棵树,因为一个生物可能会以多个生物为食,所以按拓扑序来建树,把每个遍历到的点的父 ...

  4. ElementUI 源码定制防坑指南

    背景 我司OA系统公文管理模块Office在线编辑使用的是金格IWebOffice中间件[PPAPI插件,通过<object>标签加载],IWebOffice在chrome中设置div盒子 ...

  5. SpringMVC、SpringFox和Swagger整合项目实例

    目标 在做项目的时候,有时候需要提供其它平台(如业务平台)相关的HTTP接口,业务平台则通过开放的HTTP接口获取相关的内容,并完成自身业务~ 提供对外开放HTTP API接口,比较常用的是采用Spr ...

  6. keychain不能导出p12证书的解决方法

    点击左边下面的“我的证书”,然后点击右边的证书,打开下面有一个key导出就可以了.

  7. eslint校验——开启服务后自动校验

    "[javascriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode&q ...

  8. ssh修改端口

    安装防火墙 sudo yum -y install firewald sudo systemctl start firewald.service sudo firewall-cmd --list-al ...

  9. Python学习日记(十九) 模块导入

    模块导入 当文件夹中有这样一个自定义的command模块 在它的内部写下下列代码: print('这个py文件被调用!') def fuc(): print('这个函数被调用!') 然后我们在comm ...

  10. MySQL Hardware--FIO压测

    FIO参数 .txt 支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb direct= 测试过程绕过机器自带的buffer,使测试结果更真实 rw= ...