布尔值或运算符的C ++优化

时间:2015-04-20 18:21:11

标签: c++ if-statement optimization boolean

我有以下代码按预期工作:

bool result=false;
for(int i=0;i<n;i++)
{
    if(face[i].intersect(*coordinates, org, dir))
    {
        result = true;
    }
}
return result;

但是这个行为有不同的行为(coordinates指向的值不同)

bool result=false;
for(int i=0;i<n;i++)
{
    result = result || faceList[i].intersect(*coordinates, org, dir, triangle);
}
return result;

原因是什么? ||之后的表达式是否从未评估过前面的表达式是否为真?我认为这种优化只能在if声明中使用。

0 个答案:

没有答案