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 //1if //2
else
这时候else就是和第二个配对不是第一个
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配对?
verilog中if else中能套if else吗,有啥错误啊,为啥??? case中能套if else吗 case中能套case吗