我有一个非常简单的代码,其中逻辑移位以奇怪的方式使用~0值
据我所知,它与签名/无符号数据类型有关
#include <stdio.h>
void printfbits(int x) {
for (int i=7; i>=0;i--) {
printf("%d", x>>i & 1);
}
printf("\n");
}
int main() {
printfbits(~0>>1);
}
Run Code Online (Sandbox Code Playgroud)
我期待0111111,而不是1111111.我也试过,没有成功
printfbits(((unsigned int)~0)>>1);
Run Code Online (Sandbox Code Playgroud) c ×1