使用If,ElseIf,ElseIf比使用If,If,If更好吗?

时间:2010-05-21 11:21:37

标签: if-statement

使用

之间真的有什么区别吗?
If(this)
{
}
Else If(that)
{
}
Else
{
}

或使用,

If(this)
{
}
If(that)
{
}
Else
{
}

? 一个人执行得更快吗?编译器或架构有什么不同吗?

5 个答案:

答案 0 :(得分:19)

this - 块和that - 块的内容可以两者以第二种形式执行,但第一种形式允许在大多数要执行的人。

比较这两个Python代码段:

x = 10

if x > 5:
    print "x larger than 5"
elif x > 1:
    print "x larger than 1"
else:
    print "x not larger than 1"

# output: x larger than 5

x = 10

if x > 5:
    print "x larger than 5"
if x > 1:  # not using else-if anymore!
    print "x larger than 1"
else:
    print "x not larger than 1"

# output line 1: x larger than 5
# output line 2: x larger than 1

正如其他人所提到的,您通常不应该关注这些变体之间的表现,因为您应该关注正确性。但是,由于您要求...其他所有内容相同,因此第二种形式将会变慢,因为必须评估第二个条件

但除非您确定以此形式编写的代码是瓶颈,否则即使认为优化它也不值得您努力。在从第一种形式切换到第二种形式时,您放弃跳出第一个if语句并获得对第二个条件的强制评估。根据语言的不同,可能的差异非常小。

答案 1 :(得分:4)

是的,在您的第一个示例中,如果此计算结果为true且计算结果为true,则仅执行第一个代码块,而在第二个示例中,它们都将执行。

它们不等同

答案 2 :(得分:3)

在第一种情况下:如果当前条件失败,控制流将仅检查下一个条件,但在第二种情况下,它将检查遇到的所有条件。

在第一种情况下,只有在所有先前条件都不成立的情况下才会执行Else部分。仅在最后一个If条件失败时才在第二种情况下。

答案 3 :(得分:1)

它有所作为。

如果“this”和“that”都是真的,那么代码的两部分都会产生其他的东西。

答案 4 :(得分:0)

在第一段代码中 它将检查 IF ,如果为真,则执行其正文, 如果是假的那么 检查 ELSEIF ,如果 为真,执行其正文, 如果是假的那么 执行其他主体。

第二个代码 它将检查 IF ,如果为真,则执行其正文, 如果假不做任何事。 检查第二个 IF ,如果 为真,执行其正文, 如果是假的那么 执行其他主体。