小编del*_*kov的帖子

C中的逻辑右移具有~0值

我有一个非常简单的代码,其中逻辑移位以奇怪的方式使用~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

10
推荐指数
1
解决办法
830
查看次数

标签 统计

c ×1