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

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

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

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

打印0.

和:

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

打印FF0.

解决方法

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

改成

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

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