嵌套IF语句与IF-ELSE 我学习C语言,使用Turbo C++编译器,及时遇到两个语句: 如果嵌套了多个IF 如果elsenot嵌套但继续else,else等

嵌套IF语句与IF-ELSE 我学习C语言,使用Turbo C++编译器,及时遇到两个语句: 如果嵌套了多个IF 如果elsenot嵌套但继续else,else等,c++,c,C++,C,我想知道我的想法是否正确,如果嵌套了许多if,那么elsenot嵌套是否相同?我们非常感谢您的建议。这只是背后的基本逻辑: 嵌套的if条件: 如果第一个条件的值为true,则进入第二个条件 if(a > 0) { printf("A is greater than 0\n"); if(a > 2) printf("A is greater than 0 and 2\n"); } 如有其他情况: 如果第一个条件的值为false,请转到下一个: if(a > 0) pri

我想知道我的想法是否正确,如果嵌套了许多if,那么elsenot嵌套是否相同?我们非常感谢您的建议。

这只是背后的基本逻辑:

嵌套的if条件: 如果第一个条件的值为true,则进入第二个条件

if(a > 0)
{
  printf("A is greater than 0\n");
  if(a > 2) printf("A is greater than 0 and 2\n");
}
如有其他情况: 如果第一个条件的值为false,请转到下一个:

if(a > 0) printf("A is greater than zero\n");
else if(a < 0) printf("A is lesser than zero\n");
else printf("A is zero\n");
嵌套的if不等同于if-else。它可以等效于具有组合条件的单个if,例如:

if (a == 1) {
    if (b == 2) {
        ...
    }
}
相当于:

if (a == 1 && b == 2) {
    ...
}

我猜你的意思是如果:

if(expression){
    //code
}
else{
    if(expression){
        //code
    }
}
相当于:

if(expression){
    //code
}
else if(expression){
    //code
}
是的,完全一样。第二个是更好的方式。

否则,如果块实际上是嵌套的,因为C和C++对“ELSIF”或“ELIF”概念没有任何特别的支持,现在不谈论预处理器指令。通过严格使用块和缩进,这一点变得显而易见:

if(something) { doSomething(); }
else {
    if(anotherThing) { doAnotherThing(); }
    else {
        if(yetAnotherThing) { doYetAnotherThing(); }
        else
            { doSomethingElse(); }
    }
}
使用通常的else if符号编写的相同代码:

if(something) { doSomething(); }
else if(anotherThing) { doAnotherThing(); }
else if(yetAnotherThing) { doYetAnotherThing(); }
else { doSomethingElse(); }

如前所述,如果可能的话,您应该更愿意切换到其他位置。但是,特别是对于字符串比较,这是不可能的。

可能需要显示每种代码的代码示例,以便我们知道您在谈论什么,以及您对实际代码有何疑问。有些是等价的,有些则不是。如果Turbo C++ 3引用1992中发布的软件,我会鼓励您使用更现代的编译器/开发环境。例如,有几个免费的。例如,使用最近的,考虑安装一些Linux发行版。如上所述,嵌套的if条件,如果用户在执行程序后没有进入第2号,如果条件变假,我们就不会创建其他的程序。程序会在中间中断或者什么?@ JohnCounter,程序不会对你的号码做任何具体的动作。在这种情况下,还有另一个指令开关,我编辑了我的帖子,看一看。如此复杂的ifs结构,看起来很糟糕,先生。@MateuszKwaśniak是的,它是,这就是为什么每个人都写其他if。
if(something) { doSomething(); }
else if(anotherThing) { doAnotherThing(); }
else if(yetAnotherThing) { doYetAnotherThing(); }
else { doSomethingElse(); }