将函数放在if语句中是否有效?(C++)

4 c++ performance

我见过这样的陈述

if(SomeBoolReturningFunc())
{
    //do some stuff
    //do some more stuff
}
Run Code Online (Sandbox Code Playgroud)

并且我想知道在if语句中放置一个函数是否有效,或者是否有更好的方法将它们分开,就像这样

bool AwesomeResult = SomeBoolReturningFunc();
if(AwesomeResult)
{
    //do some other, more important stuff
}
Run Code Online (Sandbox Code Playgroud)

...?

Ed *_* S. 26

我不确定是什么让你认为首先将表达式的结果赋值给变量比评估表达式本身更有效,但它永远不会重要,所以选择增强代码可读性的选项.如果您真的想知道,请查看编译器的输出,看看是否有任何区别.在绝大多数系统中,这可能会导致相同的机器代码.

  • +1.编译器将优化这两者完全相同.即使是非优化的编译器也可能不会为这些生成不同的机器代码,因为它可能会在整个时间内将布尔值保留在寄存器中. (11认同)

Sco*_* M. 7

无论哪种方式都无所谓.基本的想法是,无论你命名与否,结果都将存储在一个临时变量中.可读性现在更重要,因为计算机通常如此之快,以至于小调整无关紧要.