C语言学习之if语句的判断条件的写法

文章讲述了C语言中if语句的不同写法可能导致的逻辑错误,特别强调了赋值语句与判断条件的区别。作者推荐使用明确的等号(==)进行比较,以避免因粗心导致的错误,即使代码更简洁,也便于错误检测。
摘要由CSDN通过智能技术生成

我们知道   if   是C语言的选择语句,在选择的时候需要有判断条件,判断条件的形式有很多种写法,但是这些写法都不会导致语法错误,但有些写法会导致我们程序的逻辑错误,下面就跟大家讲讲为什么会这样说。

int main()
{
	//写法1
	int num = 1;
	if (num == 5)
	{
		printf("hehe\n");
	}
	//写法2
	int num = 1;
	if (5 == num)
	{
		printf("hehe\n");
	}
	return 0;
}

大家看上面的代码,是不是看着都没有问题,那我来告诉你们,这两种写法确实都没有问题,实现的功能逻辑也是相同的。除了写法不一样,其它通通一样。

那我们平时最常用的写法就是下面这种

但是这种写法会出现一个问题,什么问题呢?

假如我们有天写代码写得太快,没太注意,结果写成了下面的代码。

int i = 10;
if(i = 10)
{
    printf("%d\n",i);
}

写成这种形式的代码依然会去执行printf语句,但是跟我们想要实现的逻辑就不一样了,如果在某些地方把 i 的值改为了其他的值,然后在像上面这种不小心的写法,那么if的判断条件还是会满足,继续执行printf语句,比如下面的代码,不管i的值为多少都会满足条件,违背了我们的逻辑。

但我们用另外一个种写法,就不会出现这种情况,来看下面的代码,

这是正常情况下,没有写错判断条件的时候,会按照我们的逻辑得到想要的结果。

下面这个就是我们写得太快导致写错了条件判断,但是写错了编译器就会马上报错,第一时间让你知道这里写错了,导致语法上的错误。

 

为什么会出现这种问题?

因为第一种写法,如果少写了‘=’符号,if的判断条件就成了一个赋值语句,只要不是赋值的0,那么永远都会满足条件。第二种写法,如果少写了‘=’符号,就成了10=20,这种写法是不对的,因为常量不能作为左值用,所以编译器会马上报错。

总结:那这两种写法两种比较好呢,其实都有好处,第一种写法方便阅读,看得顺眼一点,但是不小心少写了=符号,就会出现另外一个种结果了。第二种写法就不会出现这种情况,一旦少写了=符号,编译器马上报错。所以为了防止铁子们粗心,建议还是采取第二种写法好一点。

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值