12

我有两个问题 - (I)

code-fragment-1

if(<condition-statement>){
}

else if(<condition-statement-2>){
    //statements-1
}
//statements-2

代码片段 2

if(<condition-statement>){
}

else{
    if(<condition-statement-2>){
        //statements-1
    }
    //statements-2
}

上面两个代码片段是一样的吗?

(II) 什么时候使用else ifs(在 C++ 中)?

4

4 回答 4

15

唯一的区别是在示例 1 中,无论您检查的条件如何,您的 Statement2 都会被执行。if在示例 2 中,Statement2 仅在您的条件为 false时才会执行。除此之外,它们基本相同。

于 2012-10-06T07:19:20.117 回答
10

不,在第一种情况下,只有在未<condition-statement> 验证且仅在 <condition-statement-2> 已验证时才执行 else 块。

在第二种情况下,如果未验证<codition-statement>,则只需执行 else 块。

在这种情况下是等价的,直到你没有任何 //statements-2。

关于问题:什么时候使用 else if(在 c++ 中)?

基本上在所有其他具有此结构的语言的相同条件下使用。 else作为相关 if 的替代执行,作为替代执行,但要验证else-if“附加” ,否则不执行。if所以它们在逻辑上并不等价。

于 2012-10-06T07:19:29.733 回答
3

an 的语法if是真的

if(condition) statement;

真正做的{}是允许您将多个语句组合在一起。在您的第二个示例中,您的 s 中只有一个语句(if){},所以是的,两个示例都是相同的,除了 //statements-2 总是在 !=true 时运行

于 2012-10-06T07:20:58.953 回答
1

在您的第一个代码示例中,statement-2 是无条件执行的。第二个是有条件的。不一样。

通常首选“else if”,因为您可以无限期地继续插入或附加更多它们,或者附加一个“else”,而对于另一种形式,您必须无休止地摆弄花括号才能获得相同的效果,而您冒着改变语义的风险,正如您在第二个示例中所做的那样。

于 2012-10-06T07:42:15.143 回答