我正在两个整数的个别位上操作(我在Ubuntu机器上使用g ++进行编译)。C++按位运算
在一些中间步骤,我有位表示为
q = 11000000000000000000000000000000
q_1 = 00000000000000000000000000000001
现在我要检查是否Q的单位的场所和Q_1都是相同与否。所以,我在if条件中检查(*q)&1==q_1
,它的工作正常。
但是,每当我想检查q的单位是0,q_1的位置是1时,我认为我应该做((*q)&1==0) && (q_1==1)
,但它不像预期的那样工作。对于调试,我cout
单独编辑((*q)&1==0)
和(q_1==1)
的值,并将它们打印为1
。但是,((*q)&1==0) && (q_1==1)
的值打印为0.为什么?
* 编辑:*在功能,Q是通过引用传递,所以我用* Q来获取值..
关于您的编辑:你的意思是,作为指针传递?如果它作为* reference *传递,那么你不会使用'*'。 – hyde
这是一个经典的bug,最少的研究会给你的原因:按位运算符的优先级低于==。作为一个经验法则:如果您不详细了解所有运算符优先级规则,请使用括号。 – Lundin
对不起,我已经在'(* q)'周围使用了很多括号,因为不知道优先级,因为'&'的操作数都是'1',我仍然得到'0'作为输出... –