c - C 中的运算符 &= 和 ~1U

标签 c operators

这段代码是做什么的s &= ~1U如果s=8 ? 我认为它必须用二进制做一些事情,但不知道到底是什么?

提前致谢!

最佳答案

为了简单起见,我在这里将其写成 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

关于c - C 中的运算符 &= 和 ~1U,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55172097/

相关文章:

c - 我不知道为什么它不起作用,格式 %d 需要

列表和一元运算符组合的 Perl 运算符优先级

c++ - 为什么 C 选择某些运算符作为它们的符号?

c++ - C/C++ 中的正向和反向 Gabor 变换库

c - 递增指针

java - power 函数求指数为十进制且小于 1 的幂

C++ [] 具有多个参数的数组运算符?

c++ - c++中的数字加法

c - 在 C 中使用 LwIP 设置 DHCP 选项

c - syntastic 叛变 : how to disable checking files in/usr/include/*. h