这个问题几乎适用于所有类似 C 的“大括号”编程语言。
我说的是使用以下内容:
if(condition)
meh();
else if(condition1)
bleh();
else if(condition2)
moo();
else
foo();
在代码中使用这个习语时有什么需要注意的地方吗?我正在寻找诸如性能损失、编译器限制等内容。典型的编译器会如何处理此类内容?
我问是因为尽管它在人眼中看起来漂亮且扁平,但实际上它会被严格解析为等同于以下内容,并添加了大括号:
if(condition)
{
meh();
}
else
{
if(condition1)
{
bleh();
}
else
{
//...
}
}
即else if
并不是真正的分隔符;相反,每个 if
都将嵌套在前面的 else
中。这就像将 x+y+z+... 解析为 x+(y+(z+...))。
编译器实际上是这样对待它的,还是他们会将 else if
视为特例?如果是前者,我需要注意哪些注意事项?
(这是我在 StackOverflow 上的第一个问题。)
最佳答案
当我看到这个。就优化而言,我认为这是我的想法;
if(blah)
//Most likely code to be run.
elseif(bleh)
//Less likely code to be run.
elseif(blarg)
//Even less likely to be run.
else
//Almost never ever gets here.
根据您的评估,switch 语句可能更好。
关于c - 使用级联 "else if"语句有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11711995/