C++ 检查位还是使用布尔值?
我得到二维平面(x,y)上的一个点作为输入。现在我必须检查它在哪个象限,做一些关于X轴和Y轴的反射,然后再次检查它在哪个象限重复了很多次 我有两种方法,但不确定哪种更好C++ 检查位还是使用布尔值?,c++,optimization,C++,Optimization,我得到二维平面(x,y)上的一个点作为输入。现在我必须检查它在哪个象限,做一些关于X轴和Y轴的反射,然后再次检查它在哪个象限重复了很多次 我有两种方法,但不确定哪种更好 我可以首先将x,y存储为布尔值,然后在反射时执行布尔运算,因此这将很容易。要知道该点位于哪个象限,只需检查该值是否为真 或者,我可以使用int进行常规方法,然后检查第一位,找出该点所在的象限 两者都不是,只需将坐标与0进行比较即可 如果将它们存储为布尔值,除了丢失信息外,还可能由于转换而产生一些开销 如果您检查第一位,它的可读性
两者都不是,只需将坐标与
0
进行比较即可
如果将它们存储为布尔值,除了丢失信息外,还可能由于转换而产生一些开销
如果您检查第一位,它的可读性将降低
编译器将自行优化这些调用,但如果使用不同的方法,您可能会有所收获 我认为与0比较要比比较单个位或检查boolno的值花费更多的时间,这取决于编译器是否只检查要比较的第一位0@nischayn22编译器非常擅长进行这种微优化。另外,请注意,从理论上讲,检查bool可能比检查int慢,因为它需要提升到单词大小。当你写代码的时候,目标是可读性,并且只有在分析之后才进行这些更改。哦,检查bool可能会慢一些,那么我们应该总是将值存储在int中并检查那个位?你能解释一下我应该如何反映坐标吗(对于bool,我所做的只是y=!y)?对于int,它应该是
y=-y代码>