c – 按位运算结果和布尔值

前端之家收集整理的这篇文章主要介绍了c – 按位运算结果和布尔值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
让我感到沮丧的代码如下:
bool a = 0x00000FF0 & 0x00000FF0 == 0x00000FF0;
if (a) {
  Serial.println("True");
} else {
  Serial.println("False");
}

这打印“假”.我真的不明白为什么.
更多测试:

bool a = 0x00000FF0 & 0x00000FF0 == 0x00000FF0;
Serial.println(a);

打印0.

和:

unsigned long a = 0x00000FF0 & 0x00000FF0;
Serial.println(a,HEX);

打印FF0.

解决方法

运算符优先级,编译时带有警告:
warning: suggest parentheses around comparison in operand of ‘&’ [-Wparentheses]

改成

bool a = (0x00000FF0 & 0x00000FF0) == 0x00000FF0;

猜你在找的C&C++相关文章