【发布时间】:2019-11-09 17:58:44
【问题描述】:
我有一段 C 代码,我想了解程序中的第一个 else 是如何解释它后面的 if 的。通常在 if-else 连词中,当 if 中的条件为 false 时,程序执行 else 之后的语句,当 else 没有花括号时。在下面,else之后没有大括号,所以我的问题是:else是否解释“if(prefer>=5){ printf("Buya");printf("也许事情会很快好转!\n");}" 作为单个语句,类似于 " else printf("这是上述 else 的替换语句");"施工?
或者 if - else if 连词还有其他逻辑?例如,else 仅激活“if(prefer>=5)”,并且该条件如果为真,则执行大括号中的内容?
C 语言的完整代码如下。提前谢谢你。
#include <stdio.h>
int main()
{
int prefer=2;
if (prefer >= 8)
{
printf("Great for you!\n");
printf("Things are going well for you!\n");
}
else if(prefer>=5)
{
printf("Buya");
printf("Maybe things will get even better soon!\n");
}
else if(prefer>=3)
{
printf("Bogus");
printf("Maybe things will get worst soon!\n");
}
else
{
printf("Hang in there--things have to improve, right?\n");
printf("Always darkest before the dawn.\n");
}
return 0;
}
【问题讨论】:
-
这与嵌套多个不带括号的
for循环时的逻辑相似。在第一个else之后,下一个if代码块在下面 9 行结束。所以整个事情被隐含地对待,好像它自己包含{大括号}。 -
if(prefer>=2) {...} else {...}被视为单个语句,因此不需要用大括号括起来。 -
@interjay,如果在最后一个 else 之后会再写一个 if (condition) {....} 怎么样?它仍然会被视为一个单一的声明吗?像这样: if(prefer>=2) {...} else if(condition) {...}
-
if开始另一个不相关的序列。如果你有else if,它将被链接起来,你可以很容易地验证。 -
@Weather Vane,“如果你有 else if,它会被锁住”是什么意思?我已经修改了我的原始代码,所以我会有一个 if - else-if - else-if 链?在这个公式中,链概念实际上是如何工作的?提前致谢。
标签: c if-statement