gpt4 book ai didi

c - 在 c 中检索有符号 long long 的最高有效 32 位

转载 作者:行者123 更新时间:2023-11-30 20:37:28 24 4
gpt4 key购买 nike

由于某种原因,当使用指针引用位时,高 32 位会丢失

机器是小尾数法。

s64 num = 0x12345678ABCDEF99;
printf("%x%x", *(int* )((&num) + sizeof(int) ) ,*(int* )(&num));
//i used *(int* )(&num)to show that it works only with the first 32 bits

输出:0abcdef99

最佳答案

((&num) + sizeof(int))

这不会将 &num 指针移动到 4 个字节(假设 sizeof (int) 为 4),而是移动到 4 int,即。例如,16 字节。这会:

((unsigned char *) &num + sizeof (int))

请注意,当您取消引用该对象时,这也是未定义的行为,因为它违反了 C 别名规则。正如评论中也提到的,%x 需要一个 unsigned int,但您传递一个 int 参数。

关于c - 在 c 中检索有符号 long long 的最高有效 32 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32488634/

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