复合运算符'& ='是逻辑还是按位AND?
换句话说,a &= b
与:
a = a & b
a = a && b
答案 0 :(得分:2)
这是按位AND,而不是逻辑。 (必须添加一些字符)
答案 1 :(得分:2)
a &= b
正在使用按位AND运算符。想想+=
操作:
a += 5;
与:
相同a = a + 5;
这只是两个操作的组合:&
和=
。
答案 2 :(得分:2)
在C中,a &= b
是a = a & b
,即按位。在C ++中,有一个专用的bool
类型,布尔值上的&=
也是布尔值,就像&
上的简单bool
一样。但是,这些都没有表现出&&
的短路行为。
答案 3 :(得分:2)
这是bitwise AND
简单
执行a&=b
时表示a=a&b
请记住a
和b
应为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
到控制台。