【发布时间】:2014-09-01 19:25:10
【问题描述】:
我的程序写在下面:
void main() {
int n =0;
printf("%x", (~0 << (32+ (~n +1) )));
}
由于n = 0,~n = 0xffffffff == -1,所以~n + 1 等于0。 当我执行这个程序时,我得到 0xffffffff,这是不正确的,因为 (~0
当我用 0 替换 (~n +1) 时,它输出 0。
非常感谢任何帮助。
【问题讨论】:
-
@mafso:我不明白怎么做? [编辑:好的,这个问题应该说“大于或等于”,但它仍然不是重复的]
-
另外,您应该使用
int main()而不是void main() -
使用
%x输出int也会导致未定义的行为。使用%d,或将您输出的内容设为unsigned int。
标签: c bit-manipulation bit-shift