gpt4 book ai didi

c++ - 在 C++ 中将 double 转换为 intptr_t

转载 作者:行者123 更新时间:2023-11-30 04:41:57 24 4
gpt4 key购买 nike

假设如下:

#include <iostream>

int main()
{
double a = 5.6;
intptr_t b = (intptr_t) a;
double c = (double) b;
return 0;
}

c 将为 5。我的问题是,由于 intptr_t 在 64 位机器上也是 64 位的(与 double 相同),为什么在转换期间不保存精度位?

最佳答案

尽管 intptr_t 旨在表示一个指向 int 的指针,但它的底层类型仍然是一个整数。因此

intptr_t b = (intptr_t)a

仍在截断 double,类似于您刚刚编写的内容:

int b = (int)a;

你要做的是获取a的地址:

intptr_t b = (intptr_t)&a

然后再转换回来

double c = *(double*)b;

关于c++ - 在 C++ 中将 double 转换为 intptr_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58987396/

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