我们知道 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,这种写法是不对的,因为常量不能作为左值用,所以编译器会马上报错。
总结:那这两种写法两种比较好呢,其实都有好处,第一种写法方便阅读,看得顺眼一点,但是不小心少写了=符号,就会出现另外一个种结果了。第二种写法就不会出现这种情况,一旦少写了=符号,编译器马上报错。所以为了防止铁子们粗心,建议还是采取第二种写法好一点。