Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查位还是使用布尔值?_C++_Optimization - Fatal编程技术网

C++ 检查位还是使用布尔值?

C++ 检查位还是使用布尔值?,c++,optimization,C++,Optimization,我得到二维平面(x,y)上的一个点作为输入。现在我必须检查它在哪个象限,做一些关于X轴和Y轴的反射,然后再次检查它在哪个象限重复了很多次 我有两种方法,但不确定哪种更好 我可以首先将x,y存储为布尔值,然后在反射时执行布尔运算,因此这将很容易。要知道该点位于哪个象限,只需检查该值是否为真 或者,我可以使用int进行常规方法,然后检查第一位,找出该点所在的象限 两者都不是,只需将坐标与0进行比较即可 如果将它们存储为布尔值,除了丢失信息外,还可能由于转换而产生一些开销 如果您检查第一位,它的可读性

我得到二维平面(x,y)上的一个点作为输入。现在我必须检查它在哪个象限,做一些关于X轴和Y轴的反射,然后再次检查它在哪个象限重复了很多次

我有两种方法,但不确定哪种更好

  • 我可以首先将x,y存储为布尔值,然后在反射时执行布尔运算,因此这将很容易。要知道该点位于哪个象限,只需检查该值是否为真
  • 或者,我可以使用int进行常规方法,然后检查第一位,找出该点所在的象限

  • 两者都不是,只需将坐标与
    0
    进行比较即可

    如果将它们存储为布尔值,除了丢失信息外,还可能由于转换而产生一些开销

    如果您检查第一位,它的可读性将降低


    编译器将自行优化这些调用,但如果使用不同的方法,您可能会有所收获

    我认为与0比较要比比较单个位或检查boolno的值花费更多的时间,这取决于编译器是否只检查要比较的第一位0@nischayn22编译器非常擅长进行这种微优化。另外,请注意,从理论上讲,检查bool可能比检查int慢,因为它需要提升到单词大小。当你写代码的时候,目标是可读性,并且只有在分析之后才进行这些更改。哦,检查bool可能会慢一些,那么我们应该总是将值存储在int中并检查那个位?你能解释一下我应该如何反映坐标吗(对于bool,我所做的只是y=!y)?对于int,它应该是
    y=-y