Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C else如何解释它后面的if语句?_C_If Statement - Fatal编程技术网

C else如何解释它后面的if语句?

C else如何解释它后面的if语句?,c,if-statement,C,If Statement,我有一段C语言的代码,我想了解程序中的第一个其他代码如何解释后面的if。通常在if-else连接中,当if中的条件为false时,当else没有大括号时,程序在else之后执行语句。下面,else后面没有大括号,所以我的问题是:else是否解释为“if(preference>=5){ printf(“Buya”);printf(“也许事情会很快变得更好!\n”);}” 作为单个语句,类似于“else printf”(“这是上述else的替换语句”);“构造 或者if-else if连接还有另一个

我有一段C语言的代码,我想了解程序中的第一个其他代码如何解释后面的if。通常在if-else连接中,当if中的条件为false时,当else没有大括号时,程序在else之后执行语句。下面,else后面没有大括号,所以我的问题是:else是否解释为“if(preference>=5){ printf(“Buya”);printf(“也许事情会很快变得更好!\n”);}” 作为单个语句,类似于“else printf”(“这是上述else的替换语句”);“构造

或者if-else if连接还有另一个逻辑?比如,else只激活“if(preference>=5)”,如果该条件为true,则执行大括号中的内容

下面是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;
    }
#包括
int main()
{
int=2;
如果(首选>=8)
{
printf(“太好了!\n”);
printf(“你一切顺利!\n”);
}
否则,如果(首选>=5)
{
printf(“买方”);
printf(“也许事情很快会变得更好!\n”);
}
否则,如果(首选>=3)
{
printf(“伪造”);
printf(“也许事情很快就会变得更糟!\n”);
}
其他的
{
printf(“坚持下去——事情必须改进,对吗?\n”);
printf(“黎明前总是最暗的。\n”);
}
返回0;
}

这里有一个更具括号的版本可以解释这一点:

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

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

它的逻辑类似于为不带大括号的
循环嵌套多个
。在第一个
else
之后,下一个
if
代码块再向下9行结束。因此,整个事件被隐式处理,就好像它本身包含
{
大括号
}
如果(首选>=2){…}否则{…}
被认为是一个单独的语句,所以不需要用大括号包装。@interjay,如果在最后一个else之后,它会被编写成另一个if(条件){…}呢?它仍然会被视为一个单独的声明吗?这样:if(preference>=2){…}else if(condition){…}
if
启动另一个不相关的序列。如果你有
else if
,它将被链接,你可以很容易地验证它。@Weather Vane,你说的“如果你有else if,它将被链接”是什么意思?我已经修改了我的原始代码,所以我将有一个if-else if-else if链?在这个公式中,链的概念实际上是如何工作的?提前谢谢。