码迷,mamicode.com
首页 > 其他好文 > 详细

if、else组合

时间:2019-11-18 20:31:32      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:als   异常情况   比较   定义   eps   布尔值   产生   意义   深度剖析   

  if、else看起来很简单,也是我们最开始入门时就学习的逻辑结构,但在看了C语言深度剖析后,有了新的理解。下面记录一下几个简单的问题。

  1.bool变量与“零值“进行比较

  bool bTestFlag = FALSE;

  //写法A
  if(bTestFlag == 0);
  if(bTestDlag == 1);

  //写法B
  if(bTestFlaf == TRUE);
  if(bTestFlag == FALSE);

  //写法C
  if(bTestFlag);
  if(!bTestFlag);

  以上那种是正确的写法呢?首先看写法A,写法A很容易误认为bTestFlag是整型变量,所以这种写法不好。再看看写法B,FALSE的值大家都知道(在编译器的被定义为0),但是要注意TRUE的值可不都是1,例如Visual Basic就把TRUE定义为-1,所以这种写法也不好。最后看看写法C,if语句是靠其后面括号里的表达式的值来进行分支跳转,如果表达式为真则执行紧跟if语句后的代码;否则不执行。所以写法C很好,不会引起误会,也不会由于TRUE或FALSE的不同定义值而出错。所以以后写代码是得注意,按C方法写比较好。

  2.float变量与”零值“进行比较

  float fTestVal = 0.0;

  //写法A

  if(fTestVal == 0.0);        if(fTestVal != 0.0);

  //写法B

  if((fTestVal>=-EPSINON)&&(fTestVal<=EPSINON));

  EPSINON为定义好的精度

  以上写法是否正确呢?我们知道float和double都是有精度限制的,直接拿来与0.0比肯定不正确。EPSINON为定义好的精度,如果一个数落在[0.0-EPSINON ,0.0+EPSINON]这个闭区间内,我们就认为在某个精度内它的值与零值相等。

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

  int * p = NULL;

  (A) if(p == 0);

  (B) if(p);

  (C)if(NULL == p);

  以上写法那些是正确的呢?分析如下:

  在写法A中,很容易误认为p是整型变量,引起误会,尽管NULL的值和0一样,但意义不同,所以这个写法不好。

  在写法B中,容易误认为p是bool型变量,不好。

  最后的写法C是正确的。

  4.一些使用if语句需要注意的事项

  •   先处理正常情况,再处理异常情况就
  • 确保if和else子句没有弄反
  • 赋值运算符不能使用在产生布尔值的表达式上
  • 所有的if-else if 结构应该由else子句结束

 

if、else组合

标签:als   异常情况   比较   定义   eps   布尔值   产生   意义   深度剖析   

原文地址:https://www.cnblogs.com/taoye1997/p/11884578.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!