【发布时间】:2018-02-08 21:08:22
【问题描述】:
我正在尝试将 char 中的所有位设置为 true。
char foo = 00000000;
foo |= 11111111;
for (int i = 0; i < 8; i++) { //prints out bitwise
printf("%d", !!((foo << i) & 0x80));
}
当 foo 全为 0 时,我得到 11000111。 当 foo == 00000110 时,它打印 11001111; 这里出了什么问题?
【问题讨论】:
-
11111111是一个十进制常量。 -
我发现
unsigned char foo = -1;非常可靠。我建议你也坚持使用无符号类型的位掩码。 -
@StoryTeller 我更愿意使用
unsigned char并使用UCHAR_MAX... -
@EugeneSh。 -
-1打字较少:P -
0xFF............
标签: c bit-manipulation bitwise-or