else是和之前与其最近的且不带else的if配对,有种情况我不太明白

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了else是和之前与其最近的且不带else的if配对,有种情况我不太明白相关的知识,希望对你有一定的参考价值。

在嵌套使用if语句时,C语言规定else总是( C )。
A)和之前与其具有相同缩进位置的if配对 B)和之前与其最近的if配对
C)和之前与其最近的且不带else的if配对 D)和之前的第一个if配对
这是题目,我知道答案说的是哪种情况,但是有种情况我还是不太明白:

大家看图上的这种情况,else与第一个if配对还是与第二个if配对,我觉得是第一个,这样的话这道题的答案就不对了。难道这样是与第二个if配对?
题目说的是嵌套使用if语句,这种情况算是嵌套吗,我觉得算是吧。
求解释~

题目和你的感觉都是对的..

题目的意思是如果不写的时候的情况

如果你已经写了就视为一个代码块,里面的if和else都是独立的不会受到外面的影响,所以你图片那个else是和第一个if配对

但是比如

if //1
    if //2
    else

这时候else就是和第二个配对不是第一个

参考技术A //类型1:
if(a>b)
if(a>2*b)
printf("a>b\\n");


else
printf("a<b\\n");

//类型2:
if(a>b)
if(a>2*b)
printf("a>2*b");
else
printf("no\\n");

如上所示,这句话是针对没有用大括号限制作用域的if、else嵌套来说的:

对于类型1,因为有大括号来限制作用域,所以else与第一个if配对;

对于类型2,没有大括号限制作用域,else就与之前与其最近的且不带else的if配对,也就是第二个else;

不知道这样说你明白吗?

以上是关于else是和之前与其最近的且不带else的if配对,有种情况我不太明白的主要内容,如果未能解决你的问题,请参考以下文章

在嵌套使用if语句时,C语言规定else总是和之前与其最近的if配对?

if-else语句中,if和else的配对原则各是啥

verilog中if else中能套if else吗,有啥错误啊,为啥??? case中能套if else吗 case中能套case吗

php if语句没有中括号 那表示的是啥意思

关于if与else的错误使用

python分支结构(无switch结构)