作为参数传递给函数的浮点数矩阵给出垃圾值

Float matrix passed as a parameter to a function gives garbage values

提问人:The Testosterone Fanatic 提问时间:5/21/2023 最后编辑:MureinikThe Testosterone Fanatic 更新时间:5/22/2023 访问量:35

问:

我想将矩阵从 main 函数传递给另一个函数,代码如下:float

#include <stdio.h>
 
// n must be passed before the 2D array
void print(int m, int n, float arr[][n])
{
    int i, j;
    for (i = 0; i < m; i++)
      for (j = 0; j < n; j++)
        printf("%d ", arr[i][j]);
}
 
int main()
{
    float arr[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int m = 3, n = 3;
    print(m, n, arr);
}

这给出了输出:3 -1742458874 -1742458874 -1742458874 -1742458874 -1742458874 -1742458874 -1742458874 -1742458874

我通过替换数组类型来尝试这一点,它工作得很好。我希望它的工作方式与浮点数相同,输出“1 2 3 4 5 6 7 8 9”,但它输出的是垃圾值。floatint

C 多维数组 浮点 参数传递

评论

4赞 Steve Summit 5/22/2023
一个好的编译器,启用警告,使学习 C 变得更容易。我的编译器立即警告我.warning: format specifies type 'int' but the argument has type 'float'

答:

1赞 Mureinik 5/21/2023 #1

%d是 s 的错误格式。使用应该可以解决问题,您应该会看到预期的结果。如果只想打印浮点数的“整个”部分,也可以指定精度:float%f

printf("%.0f ", arr[i][j]);