关于代码完成的这个例子:
Comparison Compare(int value1, int value2)
{
if ( value1 < value2 )
return Comparison_LessThan;
else if ( value1 > value2 )
return Comparison_GreaterThan;
else
return Comparison_Equal;
}
Run Code Online (Sandbox Code Playgroud)
你也可以这样写:
Comparison Compare(int value1, int value2)
{
if ( value1 < value2 )
return Comparison_LessThan;
if ( value1 > value2 )
return Comparison_GreaterThan;
return Comparison_Equal;
}
Run Code Online (Sandbox Code Playgroud)
哪个更优化?(除了可读性等)
"除了可读性之外"我希望编译器能够从它们中生成相同的代码.
您可以测试一下,如果您愿意:您的C++编译器可能有生成列表文件的选项,因此您可以看到从每个版本生成的程序集/操作码......或者,您可以使用您的组件看到汇编/操作码调试器检查代码(启动可执行文件后).
这将在任何编译器...(GCC,visual studio等)中生成相同的代码.编译器的工作原理与我们的逻辑略有不同.如果成为了!...意味着在这两种情况下它都会落到最后一个返回语句中.
编辑:更一般地说,else语句只适用于人类,它实际上并没有在大多数编译器上生成任何内容......在你的情况下这是正确的,而且使用if ... else ...构造的其他任何东西都是如此.