zoukankan      html  css  js  c++  java
  • 暑假工作日志——一些变量与“零值”的比较

    1、bool型变量如何与零值进行比较?

    bool bTestFlag = FALSE;(想想为什么bool型变量初始化为FALSE)

    a、  if(bTestFlag==0) /if(bTestFlag==1)

    b、  if(bTestFlag==TRUE)/if(bTestFlag==FALSE)

    c、  if(bTestFlag)/if(!bTestFlag)

    写法a,很容易让人误以为bTestFlag是一个整型变量,不好

    写法b,FALSE的值在编译器中被定义为0,但是TRUE的值呢?在Visual C++中被定义为1,而在Visual Basic中则被定义成-1。所以这样写也不好。

    写法c,大家都知道if语句是依靠其括号里的值来进行分支跳转的,如果括号里的值为真则执行紧跟if后面的语句,否则不执行。那么这种写法既不会引起误会,也不会因为TRUE和FALSE的不同定义造成错误。

    2、float变量与零值的比较

    float fTestVal=0.0;

    a、  if(fTestVal==0.0)/if(fTestVal!=0.0)

    b、  if((fTestVal>=0.0-EPSINON)&&(fTestVal<=0.0+EPSINON))//EPSINON为定义好的精度

    a中因为float和double都是有精度限制的,这样直接用来和0.0进行比较,结果是不对的。

    例如:PI=3.1415926536,用PI去减去0.00000000001,结果是多少?你能说前后两个值一样么?

    b中EPSINON为定义好的精度,如果有数落在[0.0-EPSINON,0.0+EPSINON],我们就认为这个数在某个精度EPSINON内与0.0相等,把0.0替换成任意一个浮点数,我们就可以比较两个任意浮点数在某个精度内是否相等了。

    3、指针变量与“零值”进行比较

    int *p=NULL;//定义指针同时一定要初始化,避免出现野指针

    a、  if(p==0)/if(p!=0)

    b、  if(p)/if(!p)

    c、  if(NULL==p)/if(NULL!=p)

    a中p是指向整型变量的指针,直接与0进行比较容易产生误会,尽管NULL和0的值一样,但是意义不同。

    b中与a一样,p不是bool型变量,容易产生误会,两者意义也不一样。

    c中,这个写法是正确的,但样子比较奇怪,为什么不这样写呢?if(p == NULL),这是为了防止出现if(p = NULL)的情况。

  • 相关阅读:
    Scrapy 概览笔记
    Python 依赖版本控制 (requirements.txt 文件生成和使用)
    Python 虚拟空间的使用
    macOS 所有版本 JDK 安装指南 (with Homebrew)
    鉴权那些事
    Java 位运算符和 int 类型的实现
    ASP.NET Core 入门教程 5、ASP.NET Core MVC 视图传值入门
    如何做好一次知识或技术分享
    ASP.NET Core 入门教程 4、ASP.NET Core MVC控制器入门
    ASP.NET Core 入门教程 3、ASP.NET Core MVC路由入门
  • 原文地址:https://www.cnblogs.com/wan0807/p/4791851.html
Copyright © 2011-2022 走看看