有什么区别:
if (expr1) {stmt}
else if (expr2) {stmt}
else if (expr3) {stmt}
else {stmt}
相同的代码块写成:
if (expr1) {stmt}
if (expr2) {stmt}
if (expr3) {stmt}
else {stmt}
答案 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 == true
和condition2 == true
第一个块(否则为id)将仅执行some statements#1
,第二个块将同时执行some statements#1
和some 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
部分,stmt3
或stmt4
将被执行。