C中的运算符&=和〜1U

时间:2019-03-14 21:12:57

标签: c operators

如果s &= ~1U,这段代码s=8会做什么? 我以为它必须对二进制文件执行某些操作,但是不知道到底是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

为简单起见,这里用1字节二进制(8位)写出来。

s = s & ~1            // U means "unsigned"
s = 8 & ~(0b00000001) // Here is the binary representation of 1
s = 8 & 0b11111110    // ~1 is 254
s = 0b00001000 & 0b11111110
s = 0b00001000

s == 8  // Final Answer.

可以通过在IDEOne上运行代码来确认这一点

输入

#include <stdio.h>
int main(void) {
    int s = 8;
    s &= ~1U;
    printf("%d\n", s);
    return 0;
}

输出

Success #stdin #stdout 0s 9424KB
8