C语言if语句一个易错小知识点

作为结构化程序设计的代表函数,if语句一直是十分有效的判别方法,但在我学习与运用它的过程中,我发现了一个很要命也很容易被忽视的小错误,让我们先看一段代码.

#include<stdio.h>
int main()
{
	char c='a';
	if('a'<c<='z')   //if语句中条件无效 
	printf("LOW");
	else
	printf("UP");
	return 0;
} 

这样无论将c的值改为什么,运行结果都是“LOW”,就很low.

我们都知道if语句中不能像我们平常学数学是那样写大小判断式,要用“ || ”或“ && ”来隔开合并几个判别式,不然就会报错。但是总有初学C语言的小可爱忽略了这一点,直接像我上面那个代码一样用作判别式,这样的判别式理论上是错误无效的,但C语言编译器(我用的是DEVC++)会自行拆解这样的判别式,像我上面的一般会拆解为

if(c>'a' || c<='z')//由于'a'<'z',这样刚好会使全部情况被包裹其中,这是数学问题哦,别来问我>_<

这样的话,无论是哪种情况,都能判别通过,也就是这种if语句中的判别式值一般会被编译器默认为1,也就是说,无论怎样,该语句后的语句都会运行,这明显与我们的初衷不一致,所以,我还是在这里劝劝初学者小可爱们要好好注意这个小问题了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhanduanwangfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值