复合运算符 '&=' 是逻辑 AND 还是按位 AND ?
换句话说,a &= b等同于:
a = a & ba = a && b
复合运算符 '&=' 是逻辑 AND 还是按位 AND ?
换句话说,a &= b等同于:
a = a & ba = a && b这是按位与,而不是逻辑。(必须添加一些字符)
a &= b正在使用按位 AND 运算符。想想+=操作:
a += 5;
是相同的:
a = a + 5;
它只是两个操作的组合:&和=.
在 C 中,a &= b是a = a & b,即按位。在有专用bool类型的 C++ 中,&=on booleans 也是布尔型,简单&的 on也是如此bool。但是,这些都没有表现出 的短路行为&&。
很bitwise AND简单
当你这样做的a&=b时候a=a&b
记住a并且b应该integral type或提升为整数类型
虽然&&是logical AND。
这是可以通过实验而不是询问来解决的问题之一:
#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
到控制台。