是否真的有使用正在使用If,ElseIf,ElseIf是否比使用If,If,If?
If(this)
{
}
Else If(that)
{
}
Else
{
}
或使用任何区别,
If(this)
{
}
If(that)
{
}
Else
{
}
? 一个人执行得更快吗?编译器或体系结构是否有所作为?
是否真的有使用正在使用If,ElseIf,ElseIf是否比使用If,If,If?
If(this)
{
}
Else If(that)
{
}
Else
{
}
或使用任何区别,
If(this)
{
}
If(that)
{
}
Else
{
}
? 一个人执行得更快吗?编译器或体系结构是否有所作为?
有该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语句并取回第二个条件的强制评估。根据语言,这是可能一个极其微不足道的差异。
对,两者在观察上相当,只是'this'和'that'是互斥的。 请注意,由于编译器可以为两者生成代码,因此可能会对性能产生影响。对于像[lisaac](http://en.wikipedia.org/wiki/Lisaac)这样的语言,如果可能的话使用调度表编译if语句,使用else if可以提高性能。 – tonio 2010-05-21 11:30:36
是的,在你的第一个例子中,如果它的计算结果为true并且计算结果为true,那么只有第一个代码块将被执行,而在第二个例子中,它们都会执行。
它们不等价
是的。
在第一种情况下:如果当前条件失败,控制流将只检查下一个条件,但在第二种情况下,它将检查遇到的所有条件。
在第一种情况下,只有前面所有条件都不成立时才会执行其他部分。而在第二种情况下,只有在最后的If条件失败的情况下。
在第二种情况下,如果第一个if为true且第二个为false,则可以评估Else语句。 – 2010-05-21 11:38:38
更新了答案。 – 2010-05-21 11:40:29
它是有区别的。
万一“this”和“that”都为真,代码的两部分都会导致其他情况。
在第一个代码。 它会检查IF,如果这为真,如果为假,则就会 检查,然后执行它的身体, ELSEIF如果即是,如果为假,则就会 执行的机构,执行它的身体, 真其他。
二码 它会检查IF,如果这是真,那么执行它的身体,如果 假无能为力。 检查第二个如果如果那是真的执行它的身体, 如果为false然后将 执行其他体。
这是基本的编程问题,你在c书中找到答案4章 – 2010-05-21 11:34:23
你有没有试过运行你的代码? – Johnsyweb 2010-05-21 11:38:24
“执行得更快”是您在决定使用哪种结构时应该担心的* LAST *事情。第一个考虑是正确的 - 他们做不同的事情,因为下面解释了许多优秀的答案,所以选择能够给出正确答案的答案。 #2是清晰度:当有两个有效的选项时,选择哪一个更容易阅读和理解。 – 2010-05-21 11:51:52