有人可以向我解释为什么掩码根本没有向右移动吗?您可以使用任何东西代替 1,结果都是一样的。
unsigned mask = ~0 >> 1;
printf("%u\n", mask);
最佳答案
这是一个类型问题。如果您将 0 转换为无符号的,那就没问题了:
unsigned mask = ~ (unsigned) 0 >> 1;
printf("%u\n", mask);
根据评论进行编辑:或使用更简洁的无符号文字表示法。 :)
unsigned mask = ~0u >> 1;
printf("%u\n", mask);
关于c - 为什么这种按位右移似乎不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/584015/