容易出错的 if 语句

下面列举几个容易出错的if语句实例,如果后续还有新的发现,还会继续更新!

出错一:在括起控制表达式的括号后面加分号

    int n = 5;
    if(n > 0);
        printf("值为正");

 

初次运行,感觉一切正常,没有错误,这时我把n的值改为-5重新编译后,------结果还是为正。

 

这是为什么?

仔细一瞧,我们发现在(n > 0)后面我们多加了个分号!!!

原因:只有一个分号的语句叫做空语句(执行空语句后什么也不会发生),因此可以这样理解:

    if(n > 0)
        ;
    printf("值为正");

 

若执行该if语句,无论n是什么值(正、负和0),结果都会显示“值为正”。

 

出错二:判断相等性时使用 =

不要把判断相等性(是否相等)时使用的 == 运算符和 = 混淆。

错误: if(a = 0)

正确: if(a == 0)

原因:在第一个错误的例子中,变量a会被赋值为0。另外,不管a的值如何,该语句都不会被执行。

 

出错三:判断三个变量的相等性时使用 ==

下面是判断变量a、b、c的值是否相等的例子。

错误:if(a == b == c)

正确:if(a == b && b == c)

原因:相等运算符 == 是双目运算符,所以 a == b == c 不能实现对三个变量的判断。

 

出错四:两个条件的判断不使用 && 或 ||

下面是判断变量a是否大于等于3小于等于5的例子。

错误:if(3 <= a <= 5)

正确:if(a >= 3 && a <= 5)

 

出错五:使用以 bit 为单位的逻辑运算符代替逻辑运算符

下面是判断变量a是否大于等于3小于等于5的例子。

错误:if(a >= 3 & a <= 5)

正确:if(a >= 3 && a <= 5)

原因:逻辑运算符中使用的是 && 或 || 运算符,不要与 & 、| 混淆,它们是不同的。

运算符

形式

名称

综合性

&

X & Y

按位与运算符

|

X | Y

按位或运算符

&&

X && Y

逻辑与运算符

||

X || Y

逻辑或运算符

 

转载于:https://www.cnblogs.com/OctoptusLian/p/8337577.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值