转自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. java之hibernate之基于主键的单向一对一关联映射

    这篇讲 基于主键的单向一对一关联映射 1.依然考察人和身份证的一对一关系,如果采用主键关联,那么其表结构应该为: 2.类结构 Person.java public class Person imple ...

  2. 1.1 文档PUT内部原理

    文档更新原理:       PUT 一条数据的时候,如果是全量替换,ES并不会覆盖原来的文档,而是新创建一个文档,并将version+1,原文档标记为deleted,不会立刻物理删除.ES会在集群的d ...

  3. 搭建SpriBoot开发环境

      一.搭建springboot开发环境 需求:使用springboot搭建一个项目,编写一个controller控制器,使用浏览器正常访问 springboot1.x版本--> 基于sprin ...

  4. 【洛谷 P3674】 小清新人渣的本愿(bitset,莫队)

    题目链接 因为每个数都是\(10^5\)以内,考虑直接用\(bitset\)维护. \(a-b=x\),其实就是看是否有\(p\)和\(p+x\)同时存在,直接\(bitset\)移位按位与一下就好了 ...

  5. 浏览器输入 URL 之后的链路

    视频 [序章]要找到B站有多难?秃头警告 脑图 一次完整的 Http 事务 文章 技术普及帖:你刚才在淘宝上买了一件东西 Github-从URL输入到页面展现到底发生什么? 总结的非常全 前端面试题: ...

  6. TR-业务流程图

    今天看到一篇关于票据业务的培训文档,介绍比较全面,分享下: https://wenku.baidu.com/view/f3dd3ee988eb172ded630b1c59eef8c75ebf9577. ...

  7. Linux命令cut

    原文 cut 文件内容查看 显示行中的指定部分,删除文件中指定字段 显示文件的内容,类似于下的type命令. 说明 该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将 ...

  8. Jquery简单闭包

    <html> <body> <script src="Js/Index.js"></script> <script type= ...

  9. redis哨兵配置 总结

    本文内容涵盖 windows下单机部署redis多实例(docker.linux下的配置也可参考本文) redis主从配置 redis哨兵配置 以spring boot redis demo下一个存a ...

  10. zabbix监控内存

    取内存百分比 取出内存的可用的MB大小 / 总的内存大小 = 实际可用的百分比 avilable 710 X 100 / total 974 free -m|awk '/^Mem/{print $NF ...