我们是否应该在c ++中使用临时变量而非用户定义的变量

sin*_*ngh 3 c++ compiler-construction optimization

可以说有一个c ++函数foo()返回一个布尔值.

我调用此函数来检查属性的状态或获取函数调用的结果.

那么调用这种类型函数的最佳方法是什么呢.

方法1:

bool flag = foo()
if (flag)
{
   // some code
}
else
{
   // else some code
}
Run Code Online (Sandbox Code Playgroud)

方法2:

if ( foo() )
{
   // some code
}
else
{
   // some code
}
Run Code Online (Sandbox Code Playgroud)

我的问题:使用临时变量是否为编译器提供了更好地优化的机会.

Dar*_*ioP 6

除非我需要重用旗帜,否则我通常会选择第二个.确实,在某些情况下它可能对调试有用,但我不喜欢用编译器能够自己处理的临时变量来污染代码.

解决方法是将所有方法一放在一个块中,以便在if语句之后释放该标志.没有结果的额外工作:我仍然采用方法2.