首页 > 试题广场 >

在嵌套使用if语句时,C语言规定else总是()

[单选题]
在嵌套使用if语句时,C语言规定else总是()
  • 和之前与其具有相同缩进位置的if配对
  • 和之前与其最近的if配对
  • 和之前与其最近的且不带else的if配对
  • 和之前的第一个if配对
具体来说else应该与前面最近的且不完整的if配对;而带有else的if表明其已经是一个完整的结构;所以选C
发表于 2015-08-27 21:33:14 回复(0)
我觉得应该选A,因为与else最近的if不一定是同一个作用域。
发表于 2018-05-06 08:37:00 回复(1)
啥头像
怎么感觉是选B呢
C的else难道不是说多个条件的else if么
if()
...
else if()
...
else

发表于 2015-09-02 16:19:34 回复(3)
举个例子:
int test()
{
	int a,b,c;
	a=2;
	b=3;
	c=1;
	if(a>b)
	{
		if(a>c)
		{
			return a;
		}
	}
	else
	{
		if(b>c)
		{
			return b;
		}
	}
	return c;
}
这个使用{ }将if else单独的写开是这样的.
然后把{ }去掉是这样的:
int test()
{
	int a,b,c;
	a=2;
	b=3;
	c=1;
	if(a>b)
		if(a>c)
			return a;
		else
			if(b>c)
				return b;
	return c;
}
没有了{ }的约束他就是会自动匹配到前一个不完整的if上.
选c比较合适.
发表于 2015-08-27 21:51:09 回复(6)
C 就近配对原则
发表于 2015-08-29 10:11:51 回复(0)
1、else应该与前面最近的且不完整的if配对;
2、带有else的if说明其已经是一个完整if结构
3、不带else的if说明其是一个不完整的if结构
换句话说就是:else总是与前面最近且不带else的if进行配对。
发表于 2015-08-27
发表于 2020-12-08 11:52:28 回复(0)
这里的不带else是指 if... else...(即已经配对的if) 而不是 else if...
发表于 2019-07-24 21:38:06 回复(0)
C++primer第五版里面 悬垂else问题写的是:就C++而言,它规定else与离它最近的尚未匹配的if匹配,从而消除了程序的二义性。🤤🤤
发表于 2019-07-12 14:26:48 回复(0)
好像是这样理解的,虽然可以人为用{}控制,但是c语言默认是c选项
发表于 2018-08-24 16:34:52 回复(0)
大意了大意了大意了
发表于 2018-04-15 21:34:19 回复(0)
提出的不好
发表于 2018-04-01 10:44:31 回复(0)
选项c应该加上同作用域内。
发表于 2018-02-06 21:30:16 回复(0)
发表于 2017-09-22 17:04:12 回复(0)
这个有英文原版的么?应该是翻译过来的吧
发表于 2017-06-22 22:06:34 回复(0)
其它的不知道对不对。但c确定是错的,都是复制的么?没有真心会的?
发表于 2017-03-04 16:09:01 回复(0)
在忽略{}的情况下,就是这种情况
发表于 2017-02-27 00:52:29 回复(0)
感觉题目的描述很难理解
发表于 2017-02-20 18:26:59 回复(0)
这道题感觉本身的答案说法就有问题,没说清楚
发表于 2017-01-16 21:49:30 回复(0)
if()
{}
else if()
{}
else if()
{}
else if()
这也选C?
有点假
发表于 2016-09-05 16:32:40 回复(0)
谭浩强版的c程序设计一书中提到:else总是和它上边最近的未配对的if配对。
发表于 2016-08-25 20:59:52 回复(1)