複合演算子 '&=' は論理またはビットごとの AND ですか?
つまり、次とa &= b
同じです。
a = a & b
a = a && b
複合演算子 '&=' は論理またはビットごとの AND ですか?
つまり、次とa &= b
同じです。
a = a & b
a = a && b
bitwise AND
簡単です
あなたがするときa&=b
それは意味しますa=a&b
覚えておいてa
、整数型に昇格または昇格するb
必要がありますintegral type
ながら。&&
_logical AND
Cでは、a &= b
はa = a & b
、つまりビット単位です。bool
専用の型があるC++では、&=
の単純なものと同様に、ブール値もブール値&
ですbool
。ただし、これらのいずれもの短絡動作を示しませ&&
ん。
これは、尋問ではなく実験によって解決できるクエリの 1 つです。
#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
コンソールに。
これはビットごとの AND であり、論理ではありません。(何文字か追加する必要があります)
a &= b
ビットごとの AND 演算子を使用しています。操作を考えてみましょう+=
:
a += 5;
以下と同じです:
a = a + 5;
&
と の 2 つの操作を組み合わせただけ=
です。