gpt4 book ai didi

c++ - 无法在初始化中将 long int* 转换为 double*

转载 作者:行者123 更新时间:2023-11-30 00:50:04 25 4
gpt4 key购买 nike

我正在开发我自己的 C++ 项目并希望执行以下场景:

  1. 将一些值写入long int数组
  2. long int 数组中读取 double int double 数组

所以,我写了如下代码:

long int lArray [100];
double dArray[100];

for (int i = 0; i < 100; i ++)
lArray[i] = i * i;

double *dPointer = lArray;

for (int i = 0; i < 100; i ++)
dArray[i] = *(dPointer++ + 1);

但是,当我编译它时,遇到 [Error] cannot convert long int* to double* in initialization 错误。我该如何解决这个问题?!

提前致谢:)

最佳答案

首先,您需要显式转换指针:

double *dPointer = reinterpret_cast<double*>(lArray);

但是,long int 的编码与double 的编码不兼容。它们可能都是 8 字节宽(取决于您的平台),但仅此而已。唯一的保证是 a 都将零表示为 8 个 0 字节。其他任何东西都不兼容,这就是为什么你的 long 是 0CDEFF333333333 但作为双倍 1.10831057258179508893524397544E-246

为什么不直接使用 double 数组呢?此外,由于您使用的是 C++,因此请查看标准库中的 vectorarray 模板。

关于c++ - 无法在初始化中将 long int* 转换为 double*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276867/

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