哪个条件语句比另一个更快(width*height*depth==0)OR(width==0height==0depth==0)

在计算速度很重要的算法中描述 3 维对象时,以下哪个条件表达式更快?

class Box {
    unsigned int width, height, depth;

public:
    bool isNull(){

       return (width*height*depth == 0);
       //OR
       return (width ==0 ||  height == 0 || depth == 0);
    }
};

回答

return 语句中使用的表达式

return (width*height*depth == 0);

通常相对于第二个 return 语句中的表达式是不正确的。由于溢出,您可以获得等于 0 的结果,但这并不意味着其中一个操作数等于 0。

这是一个演示程序。

#include <iostream>

int main() 
{
    std::cout << 0x10000000u * 0x10000000u  * 10u << 'n';

    return 0;
}

程序输出是

0

尽管两个操作数都不等于0


以上是哪个条件语句比另一个更快(width*height*depth==0)OR(width==0height==0depth==0)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>