嘿,我在写一个代码,我被困在这个if条件下
(不是为了更好地理解而简化的实际代码)
if(18&2==2)
do something;
如果条件不执行,但如果我这样写
if(18|2==18)
do something;
执行正常
当我,
printf("%d",18&2);
现在我很困惑为什么上面的if语句没有执行,
是因为优先权,请解释谢谢。
最佳答案
你的是一个“错误”。位运算符的优先级低于相等运算符。使18 & 2 == 2
变成18 & (2 == 2)
,即18 & 1
。最后一个显然是0,因为18可以被2整除。
在这种情况下,当你得到“奇怪的结果”。首先添加括号,以确保每个运算符也对预期的操作数进行操作。
关于c - AND和OR运算子c,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48364233/