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




