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

C语言数组打印异常:输出始终为0.000000求助

问题分析与解决办法

嘿,我一眼就揪出你代码里的问题啦!

你遇到的核心问题是数组越界访问——C语言里的数组下标是从0开始计数的,你定义了长度为DIM=5的数组data,那它的合法下标范围是0到4,而你代码里写的data[DIM]也就是data[5],已经超出了数组的有效内存范围。这种访问属于未定义行为,程序输出的0.000000只是刚好读取到了这块内存的随机值,换个运行环境甚至可能输出奇怪数字或者直接崩溃。

修正后的代码示例

如果你想打印数组里的所有元素,可以用循环遍历合法下标:

#include <stdio.h>
#define DIM 5
int main () {
 double data[DIM] = {128.5, 131.4, 133.2, 127.1, 130.9};
 // 遍历数组的所有合法下标
 for (int i = 0; i < DIM; i++) {
     printf("%lf ", data[i]);
 }
 return 0;
}

如果只是想打印数组的最后一个元素,直接用data[DIM-1](也就是data[4])即可:

#include <stdio.h>
#define DIM 5
int main () {
 double data[DIM];
 data[0]=128.5;
 data[1]=131.4;
 data[2]=133.2;
 data[3]=127.1;
 data[4]=130.9;
 // 访问最后一个合法元素
 printf("%lf", data[DIM-1]);
 return 0;
}

小提醒

数组越界是C语言里非常容易踩的坑,一定要牢记:数组的最大有效下标永远是「数组长度 - 1」,千万不要超出这个范围哦!

内容的提问来源于stack exchange,提问作者guiromero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:12:39