这些'如果是''其他'属于哪个?为什么?

pai*_*ego -2 java

Java编译器和其他编译器如何处理以下场景; 哪里有嵌套if没有大括号?

// In Java, to which of the 'if's does this 'else' belong?
// If bOne=false and bTwo=true, will the println run?

boolean bOne = false;
boolean bTwo = true;

if (bOne)
    if (bTwo)
        bTwo = bTwo; // do nothing

else 
    System.out.println("bOne:" + bOne + ". bTwo:" + bTwo);
Run Code Online (Sandbox Code Playgroud)

rig*_*old 6

else条款适用于第二个if语句.首先,它应该被理解为:

if (bOne)
    if (bTwo)
        bTwo = bTwo; // do nothing
    else
        System.out.println("bOne:" + bOne + ". bTwo:" + bTwo);
Run Code Online (Sandbox Code Playgroud)

然后应该重写代码以使用花括号.

这适用于许多命令式编程语言,一个值得注意的例外是Python,它具有显着的缩进而不是花括号.


Cor*_*lks 5

这被称为悬空 else问题。解决这个问题的规则是else属于最近的if。所以在那个例子中,else属于if (bTwo).