其他之间是否存在技术差异... if / else if?

时间:2010-10-18 18:04:14

标签: coding-style if-statement

我知道所有语言都不一样,但这是我一段时间都想知道的事情。

由于标题不是很清楚,

之间是否存在技术差异
if (...) {
   // ...
} else if (...) {
   // ...
}

if (...) {
    ...
} else {
    if (...) {
        ...
    }
}

我从实际角度知道,他们会做同样的事情,并且有可读性原因选择其中一个,例如第二个{​​{1}}与第一个if没有直接关系。

但从技术角度来看,我不确定。编译器是否倾向于使用else if执行某些特殊操作,或者将其视为单行操作,例如:

if (...)
   singleLine();

但看起来像:

else
   if (...) // Counts as just a single line command

希望能说清楚我在问什么。这两种方式之间是否存在技术差异,使用else { if样式有什么不利之处?

2 个答案:

答案 0 :(得分:7)

在C ++中,两者完全相同。查看正式语法。在您提供的示例中,if中的else if实际上是一个新的代码块,就像您在问题中显示的那样,它类似于单行。不过,else if格式和代码布局更好。

粗略地说,语法定义:

<if structure> -> if <condition> <code blob> else <code blob>
<code blob> -> <if structure>

所以当你这样做时

 if (1) do(); else if (3) stuff(); else thing();` 

整件

 if (3) stuff(); else thing();

只是第一个if / else结构中else的<code blob>

答案 1 :(得分:2)

我确信任何体面的编译器都会为两种表单生成相同的代码。我可以考虑使用第二种形式的唯一原因是你希望将代码添加到不受所附的if控制的else。