gpt4 book ai didi

c - 变量值溢出

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

在一个 c 程序中,我有一个 long long int 类型的变量,它存储一个值0x7ffffffffffffffff。当我将此值除以 1024 * 4 时,它会得到 2251799813685247 即0x7ffffffffffff。

现在,当我将 (1024 * 4) 乘回去时,结果是0x7ffffffffffff000。

即使我创建 long long unsigned int 类型的变量,结果也没有变化。代码在 64 位机器上运行。

为什么结果不是 0x7fffffffffffffff?

最佳答案

如果将它除以 4096,那只是右移 12 位。这意味着最后 12 位丢失了:

0x7fffffffffffffff becomes
0x7ffffffffffff

如果你乘回去,你向左移动 12,所以缺失的位用 0 填充。

关于c - 变量值溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19972720/

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