使用if,else和else if

时间:2011-09-18 22:35:21

标签: c++ if-statement

有什么区别:

if      (expr1) {stmt}
else if (expr2) {stmt}
else if (expr3) {stmt}    
else            {stmt}

相同的代码块写成:

if (expr1) {stmt}
if (expr2) {stmt}
if (expr3) {stmt}    
else       {stmt}

7 个答案:

答案 0 :(得分:10)

在第一个中,每个陈述块都是互斥的;结构保证了其中一个将被执行。

第二个不是这样。考虑:

if (a == 2) { /* blah */ }
if (a == 3) { /* blah */ }
if (a < 5)  { /* blah */ }

如果a == 2,则两个块将被执行。

答案 1 :(得分:1)

这是另一个很好的例子,看看它是如何工作的。

此示例将打印“FirstSecond”:

if(1) {
    printf("First");
}
if(1) {
    print("Second");
}

这只是打印“First”:

if(1) {
    printf("First");
}
else if(1) {
    print("Second");
}

答案 2 :(得分:0)

在您的第一个代码中,最多可以执行一个块。

在第二个代码中,所有块都可以执行。 (除了最后的其他事情。)

答案 3 :(得分:0)

在第一种情况下,将执行其中一个块。在第二个中,可以执行或不执行第一个和第二个块,并且将执行最后两个块中的一个。

答案 4 :(得分:0)

为获得最佳表现,请选择if else(如果可能)。

您也可以使用switch case语句。

答案 5 :(得分:0)

例如,如果condition1 == truecondition2 == true第一个块(否则为id)将仅执行some statements#1,第二个块将同时执行some statements#1some statements#2 。 如果程序在第一次匹配后停止匹配下一个条件,则使用else。如果条件是独占的(我不确定它是否是正确的词),它在运行时会稍微快一点。

答案 6 :(得分:0)

使用:

if      (expr1) {stmt1}
else if (expr2) {stmt2}
else if (expr3) {stmt3}    
else            {stmt4}

可以执行一个且仅一个语句。


使用:

if (expr1) {stmt}

if (expr2) {stmt}

if (expr3) {stmt}    
else       {stmt}

将执行第一和第二部分中的任何一个,两个或全部。在上一个if-else部分,stmt3stmt4将被执行。