c ++性能和运算符的例子

时间:2012-02-26 10:09:53

标签: c++

我想知道&&&操作员在层叠庄园工作。比较以下矩形碰撞检查的实现。

inline bool RectInRect(RECT one,RECT two){
    if(one.left < two.right)
    if(one.right > two.left)
    if(one.top < two.bottom)
    if(one.bottom > two.top)
    return true;
    return false;
}


inline bool RectInRect(RECT one,RECT two){
        return (one.left < two.right && one.right > two.left &&
            one.top < two.bottom && one.bottom > two.top);
}

这两者是否相同或顶部操作更快?

2 个答案:

答案 0 :(得分:1)

是的,第二个版本基本归结为第一个版本。运算符的相关属性是short-circuited:第二个操作数仅在必要时进行求值,即第一个操作数的计算结果为true。否则,整个表达式将始终计算为false,因此无需查看第二个操作数。

此行为有保证且类似,但反过来说,|| / or

答案 1 :(得分:0)

顶部的版本无法比下面的版本更快。另外对我来说,下面的陈述更清晰,所以我的建议是 - 更好地使用第二个版本。