You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

问题分析与解决办法

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

你遇到的核心问题是数组越界访问——C语言里的数组下标是从0开始计数的,你定义了长度为DIM=5的数组data,那它的合法下标范围是04,而你代码里写的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

火山引擎 最新活动