把我自己搞糊涂了。
我想测试一组位(3位)是否包含某个位置的位。
if (B110 & B010 == B010)(B110是要检查的数字,B010是我想查看是否存在的位)
上面的代码没有给出预期的结果,B110和B101都是真的。我非常确定我需要使用&(and)来测试掩码B010。
我的理解是B110 & B010等同于B010,B101 & B010等同于B000。但是我的if语句是用两个测试位运行的吗?
我用Arduino编写代码,我确信这只是我的一个简单的误解,但不确定在哪里。
发布于 2011-06-21 19:06:16
试试if ((B110 & B010) == B010)
目前,它是以if (B110 & (B010 == B010))身份运行的,这一点永远是正确的。
如this table所示,==和!=比&、|等具有更高的优先级。
发布于 2011-06-21 23:54:08
在这个测试中,"== B010“实际上是不必要的。在C中,0表示"false“,而任何非零值都被认为是”true“。B110 & B010 (或任何其他设置了该位的值)将返回B010,它不等于0,因此测试成功。
https://stackoverflow.com/questions/6427971
复制相似问题