我想知道&&&操作员在层叠庄园工作。比较以下矩形碰撞检查的实现。
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);
}
这两者是否相同或顶部操作更快?
答案 0 :(得分:1)
是的,第二个版本基本归结为第一个版本。运算符的相关属性是short-circuited:第二个操作数仅在必要时进行求值,即第一个操作数的计算结果为true
。否则,整个表达式将始终计算为false
,因此无需查看第二个操作数。
此行为有保证且类似,但反过来说,||
/ or
。
答案 1 :(得分:0)
顶部的版本无法比下面的版本更快。另外对我来说,下面的陈述更清晰,所以我的建议是 - 更好地使用第二个版本。