提问人:The Testosterone Fanatic 提问时间:5/21/2023 最后编辑:MureinikThe Testosterone Fanatic 更新时间:5/22/2023 访问量:35
作为参数传递给函数的浮点数矩阵给出垃圾值
Float matrix passed as a parameter to a function gives garbage values
问:
我想将矩阵从 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”,但它输出的是垃圾值。float
int
答:
1赞
Mureinik
5/21/2023
#1
%d
是 s 的错误格式。使用应该可以解决问题,您应该会看到预期的结果。如果只想打印浮点数的“整个”部分,也可以指定精度:float
%f
printf("%.0f ", arr[i][j]);
评论
warning: format specifies type 'int' but the argument has type 'float'