关于if与else的错误使用

Posted mb61113b2f24767

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于if与else的错误使用相关的知识,希望对你有一定的参考价值。

当我们写出以下代码的时候:


关于if与else的错误使用_作用域

调试的结果会出现2个错误,且都在else中:


关于if与else的错误使用_大括号_02


为什么这样会报错呢,这就需要从if与else的匹配原则来说起了,下面是它们的匹配原则:

if-else语句中,if和else的配对原则都是在同一个复合语句括号“ ”作用域内就近配对的原则。 如果不属于同一个复合语句括号“ ”作用域内,则不会被配对,此时如果配对存在问题,会报语法错误。

也就是说,if后面的作用域必须紧贴着else才能够进行配对。

上面的代码是:if后面没有加大括号,使用只影响下一行代码,也就是第一个printf,而第二个printf则不在它的作用域中,这个时候,else没有匹配到if,所以就会报错。

下面是if与else的另一种错误的使用方法:

关于if与else的错误使用_复合语句_03


这段代码是可以执行的,但得出来的结果是什么也没有:

关于if与else的错误使用_复合语句_04

这也是if与else得匹配原则问题,上面说了,else是依据就近原则匹配if的,且else会匹配到最近的没有被匹配过的if,所以,这里的else会匹配到第二个else。


总结:当使用if-else语句时不能再它们的中间插入正常语句,否则会报错,建议用大括号把它们的作用域显现出来,这样比较直观。




以上是关于关于if与else的错误使用的主要内容,如果未能解决你的问题,请参考以下文章

在处理错误时,在啥意义上,使用异常比使用 if...else...switch... 等更好?

pgSQL的语法错误,使用函数和if else

我正在尝试使用 else if 语句来验证电子邮件,但是它会在 else if(password.isEmpty) 上抛出错误,说“else without if”

Pandas 使用 If/Then/Else 语句在循环中抛出错误

为啥使用“if-else”语句会在看似相同的三元运算符构造不会产生 TypeScript 编译器错误?

MySQL存储过程语法错误:if else