【问题标题】:How does else interpret the if statements following it?否则如何解释它后面的 if 语句?
【发布时间】: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&gt;=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


【解决方案1】:

这是一个更括号的版本,应该解释这一点:

if(prefer >= 8)
{
    ...
}
else
{
    if(prefer >= 5)
    {
        ...
    }
    else
    {
        if(prefer >= 3)
        {
            ...
        }
        else
        {
            ...
        }
    }
}

else if(condition) ... 没有什么特别之处。相当于else { if(condition) ... }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2014-03-29
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多