0

复合运算符 '&=' 是逻辑 AND 还是按位 AND ?

换句话说,a &= b等同于:

  • a = a & b
  • a = a && b
4

5 回答 5

2

这是按位与,而不是逻辑。(必须添加一些字符)

于 2012-11-29T14:52:24.283 回答
2

a &= b正在使用按位 AND 运算符。想想+=操作:

a += 5;

是相同的:

a = a + 5;

它只是两个操作的组合:&=.

于 2012-11-29T14:52:29.367 回答
2

在 C 中,a &= ba = a & b,即按位。在有专用bool类型的 C++ 中,&=on booleans 也是布尔型,简单&的 on也是如此bool。但是,这些都没有表现出 的短路行为&&

于 2012-11-29T14:54:08.580 回答
2

bitwise AND简单

当你这样做的a&=b时候a=a&b

记住a并且b应该integral type或提升为整数类型

虽然&&logical AND

于 2012-11-29T14:55:39.900 回答
2

这是可以通过实验而不是询问来解决的问题之一:

#include <stdio.h>
#include <inttypes.h>

int main(int argc, char *argv[]) {
    uint8_t a = 0xFF;
    uint8_t b = 0x0F;

    a &= b;
    printf("a &= b : %02X\n",a);

    a = 0xFF;
    printf("a & b : %02X\n", a & b);
    printf("a && b: %02X\n", a && b);
}

印刷:

a &= b : 0F
a & b : 0F
a && b: 01

到控制台。

于 2012-11-29T15:01:20.507 回答