You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向函数传递float矩阵时出现垃圾值的问题咨询

问题分析与解决

错误根源

核心问题是格式符与变量类型不匹配:代码里用printf("%d ", arr[i][j]);输出浮点数,%d是专门用于输出整数(int类型)的格式符,程序会把float的二进制数据按照int的规则解析,自然输出垃圾值。换成int数组时正常,是因为此时格式符和变量类型刚好匹配。

修正后的代码

#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++) {
        // 用%f输出浮点数,若想输出整数形式可改用%.0f
        printf("%.0f ", arr[i][j]);
      }
      printf("\n"); // 可选:每行结束换行,让输出更清晰
    }
}
 
int main()
{
    float arr[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int m = 3, n = 3;
    print(m, n, arr);
}

关键说明

  • 输出float类型数据时,要使用对应格式符:%f用于输出带小数的浮点数,%.0f可以去掉小数部分,输出你期望的整数形式结果。
  • 二维数组的传递逻辑是正确的(先传递列数n,再传递二维数组),这部分无需修改。

内容的提问来源于stack exchange,提问作者The Testosterone Fanatic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:42:34