gpt4 book ai didi

c - 打印 float 然后打印数组时出现奇怪的行为

转载 作者:行者123 更新时间:2023-11-30 15:26:08 25 4
gpt4 key购买 nike

我尝试使用 XCode 6.1.1 使用以下函数打印两个数组:

for (int j=0; j<4; j++) {
for (int k=0; k<4; k++) {
printf("%2d ", Lattice[0][j+N*k]);
}
printf(" ");
for (int k=0; k<4; k++) {
printf("%2d ", Lattice[1][j+N*k]);
}
printf("\n");
}
printf("\n");

调用函数时一切正常,只要我之前不打印出 float 即可。打印int时没有问题。所以这是一个有点奇怪,对吧?我正在像这样初始化数组:

int **Lattice =  (int**)malloc(2*sizeof(int*));
if (Lattice == NULL) return NULL;

for (int i=0; i<2; i++){
Lattice[i] = (int *)malloc(2*sizeof(int));
if (Lattice[i] == NULL) {
for (int n=0; n<i; n++)
free(Lattice[n]);
free(Lattice);
return NULL;
}
else{
for (int j=0; j<N; j++) {
for (int k=0; k<M; k++) {
Lattice[i][j+N*k] = 0;
}
}
}
}
return Lattice;

太糟糕了,我无法上传输出图像。

矩阵应仅显示零,但带有 float 有些条目中会有很大的数字,我无法解释。

非常感谢您的任何提示。谢谢。

最佳答案

所以你的代码有一些非常严重的问题。

Lattice[0]Lattice[1]打印代码块的尺寸需要为 4x4 才有意义。顺便说一句,这意味着 NM也需要等于 4,否则您需要更改打印 for循环条件为j < Nk < M分别。

您的malloc还需要为此分配空间,因此:Lattice[i] = (int *)malloc(N * M * sizeof(int));

这应该会使您的循环正常工作,但代码中的任何地方都没有 float 。您不能使用printf打印int作为float 。值(value)不会提升。它将被简单地视为 float .

关于c - 打印 float 然后打印数组时出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27485129/

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