【发布时间】:2023-04-05 01:05:01
【问题描述】:
我正在尝试基于 bit-wise 运算符输入 if 语句而不更改原始位,我很困惑为什么我所拥有的不起作用。
我正在检查 7、4、2 位中的至少一个是否为 0。
工作代码:(它改变了我不想要的原始位)
#include <stdio.h>
void main() {
unsigned char ch = 0b11111111;
ch = ~(ch | 0x6B);
if(ch) {
printf("%s\n", "YES");
}
else {
printf("%s\n", "NO");
}
}
如果您将位 7、4 或 2 更改为 0,则会打印 NO(应该如此)并打印 YES。
非工作代码:
#include <stdio.h>
void main() {
unsigned char ch = 0b11111111;
if(~(ch | 0x6B)) {
printf("%s\n", "YES");
}
else {
printf("%s\n", "NO");
}
}
我很困惑,因为我认为这两段代码是相同的?谢谢!
【问题讨论】:
标签: c bitwise-or