这段代码不言自明,但除非我在这里说些什么,否则我无法发布问题!
#include <stdio.h>
#include <limits.h>
void rightshift_test(int const shift_amount) {
unsigned long a = 0xabcd1234abcd1234UL;
printf("a: %lx, shift_amount:%d\n", a, shift_amount);
unsigned long const b = a >> shift_amount;
printf("b: %lx\n", b);
}
int main() {
rightshift_test(56);
rightshift_test(60);
rightshift_test(61);
rightshift_test(62);
rightshift_test(63);
rightshift_test(64);
return 0;
}
它仍然不允许我发布问题。这里代码正在运行:
gcc -Wall -Wextra -Werror foo.c -o foo
./foo
a: abcd1234abcd1234, shift_amount:56
b: ab
a: abcd1234abcd1234, shift_amount:60
b: a
a: abcd1234abcd1234, shift_amount:61
b: 5
a: abcd1234abcd1234, shift_amount:62
b: 2
a: abcd1234abcd1234, shift_amount:63
b: 1
a: abcd1234abcd1234, shift_amount:64
b: abcd1234abcd1234
这里是我的编译器和我的机器的细节,以防这不是很明显。
$ gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
$ echo $MACHTYPE
x86_64-apple-darwin10.0