gpt4 book ai didi

通过附加两个 int 的二进制表示来创建 double

转载 作者:太空狗 更新时间:2023-10-29 15:23:57 27 4
gpt4 key购买 nike

我试图通过附加两个 int 的二进制表示来创建一个 double。这就是我现在拥有的:

int i = arc4random();
*(&i+1) = arc4random();
double d = *(double*)&i;

我希望double指针也使用&i+1地址中的值,事实确实如此。当我打印 i*(&i+1) 的二进制表示并将它们与 d 的二进制表示进行比较时,d 由附加 *(&i+1)i。所以 *(&i+1) 排在第一位?!为什么会这样?

编辑:另请查看 Juan Catalan 和 Mark Segal 的回答,了解我使用 union 所做的事情的正确方法是什么。

最佳答案

改用union。您仍然可以生成 NaN 但不会出现内存管理问题。

这就是 union 的全部目的,在几个不同的类型之间共享一个内存块。

确保在你的架构中 sizeof(double) 等于两倍 sizeof(int)

关于通过附加两个 int 的二进制表示来创建 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30550204/

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