gpt4 book ai didi

c - 为什么右移 64 位是恒等式而不是幂零(返回 0)?

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:16 24 4
gpt4 key购买 nike

<分区>

这段代码不言而喻,但除非我在这里说些什么,否则我不能发布问题!

#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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com