这两种代码结构有什么区别呢?嵌套与单行代码

-6 c if-statement nested-if logical-operators logical-and

    if (x>0 && x<6) 
    {
        break;
    }
    else if(x>6)
    {
        break;
    }
Run Code Online (Sandbox Code Playgroud)

相对

    if (x>0) 
    {
        if (x<6) 
        {
            break;
        }
    }
    else
    {
        if (x>6) 
        {
            break;
        }
    }
        
Run Code Online (Sandbox Code Playgroud)

代码 1 不起作用,但代码 2 起作用。为什么?我是编程方面的超级菜鸟,所以请提供任何帮助。编程语言是C。

Vla*_*cow 5

第二个代码片段中的 else 语句永远无法控制 的任何正值,x因为第一个 if 语句的条件立即计算为逻辑真。

if (x>0) {
    if (x<6) 
    {
        break;
    }
}
else {
    if (x>6) 
    {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

x在第一个代码片段中,else 语句将获得对任何等于或大于 6的值的控制。

即 ifx等于7then 第一个 if 语句中的条件

if (x>0 && x<6) 
{
    break;
}
Run Code Online (Sandbox Code Playgroud)

评估结果为逻辑假。因此 else 语句获得了控制权,并且 if 子语句的条件也计算为逻辑 true。

else if(x>6)
    {
        break;
    }
Run Code Online (Sandbox Code Playgroud)