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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在嵌套使用if语句时,C语言规定else总是和之前与其最近的if配对?相关的知识,希望对你有一定的参考价值。

您好,是这样的,除非你的if
else都加了花括号
参考技术A 你就看花括号吧,一般else前面都是上一个if的花括号
自己写代码最好加上花括号和缩进,这样代码更清晰
参考技术B 没有花括号找最近的匹配
有花括号找花括号里的匹配

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;

不知道这样说你明白吗?

以上是关于在嵌套使用if语句时,C语言规定else总是和之前与其最近的if配对?的主要内容,如果未能解决你的问题,请参考以下文章

每日一题 | day13(参数解析 | 跳石板)

求一些C语言if嵌套语句算法题

C语言中三个if语句的嵌套怎理解

在Java中,if else 语句中能嵌套for 语句吗?能的话给个详细讲解谢谢

关于C语言中if else的用法,高手来帮下忙

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