gpt4 book ai didi

c - c 中的 10k x 10k 矩阵 malloc 好奇心

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:39 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
how to sum a large number of float number?

我有一个矩阵“x”,它包含 10,000 个元素乘以 10,000 个元素。

在第一种情况下,我声明矩阵如下:

int n = 10000;
unsigned int size_M = n*n;
unsigned int mem_size_M = sizeof(int)*size_M;
int* x = (int*)malloc(mem_size_M);

第(1)步矩阵初始化:

for(i=0;i<n;i++)
for(j=0;j<n;j++)
x[i*n+j] = 1;

步骤(2)对矩阵的元素求和并打印总数:

for(i=0i<n;i++)
for(j=0j<n;j++)
sum +=x[i*n+j];

printf("sum: %d \n", sum);

如我所料,上面的代码打印出“sum: 100000000”。

但是如果我像这样声明矩阵:

int n = 10000;
float size_M = n * n;
float mem_size_M = sizeof(float) * size_M;
float* x = (float*)malloc(mem_size_M);

再次执行步骤 1 和 2,正确答案并没有打印出来,而是“16777216”。为什么是这样?

答案:要获得适当的答案,请进行类型转换...

sum +=(int)x[i*n+j];

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