C - 逻辑复合算子

时间:2012-11-29 14:50:47

标签: c bit-manipulation compound-operator

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

换句话说,a &= b与:

相同
  • a = a & b
  • a = a && b

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

a += 5;

与:

相同
a = a + 5;

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

答案 2 :(得分:2)

在C中,a &= ba = a & b,即按位。在C ++中,有一个专用的bool类型,布尔值上的&=也是布尔值,就像&上的简单bool一样。但是,这些都没有表现出&&的短路行为。

答案 3 :(得分:2)

这是bitwise AND简单

执行a&=b时表示a=a&b

请记住ab应为integral type或提升为整数类型

虽然&&logical AND

答案 4 :(得分: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

到控制台。