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

Tar*_*rka 1 if-statement coding-style

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

由于标题不是很清楚,是否存在技术差异

if (...) {
   // ...
} else if (...) {
   // ...
}
Run Code Online (Sandbox Code Playgroud)

if (...) {
    ...
} else {
    if (...) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我从实际角度知道,他们会做同样的事情,并且有可读性原因选择一个而不是另一个,例如第二个if与第一个没有直接关系.

但从技术角度来看,我不确定.编译器是否倾向于使用a做一些特殊的事情else if,或者它是否像处理单行一样处理,例如:

if (...)
   singleLine();
Run Code Online (Sandbox Code Playgroud)

但看起来像:

else
   if (...) // Counts as just a single line command
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*shD 7

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

粗略地说,语法定义:

<if structure> -> if <condition> <code blob> else <code blob>
<code blob> -> <if structure>
Run Code Online (Sandbox Code Playgroud)

所以,当你这样做

 if (1) do(); else if (3) stuff(); else thing();` 
Run Code Online (Sandbox Code Playgroud)

整件

 if (3) stuff(); else thing();
Run Code Online (Sandbox Code Playgroud)

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