来个柠檬 2022-12-26 11:06 采纳率: 0%
浏览 26

c语言数组,为啥有时候调试会报错超出数组范围,而运行一定不会?

#include<stdio.h>
int main(){
int cnt;
int x,sum;
printf("输入个数");
scanf("%d",&cnt);
if (cnt>0) {
int number[cnt];
cnt=0;
scanf("%d",&x);
while (x!=-1){
number[cnt]=x;
sum +=x;
cnt ++;
scanf("%d",&x);

}

}
printf("%d",sum);
return 0;

}

  • 写回答

2条回答 默认 最新

  • 於黾 2022-12-26 11:15
    关注

    cnt=0;是啥操作
    如果你的IDE支持C99,那么当你的cnt变成0的时候,数组长度也变成0了
    如果你的IDE不支持C99,那整个语法都是错的
    你实际上就是数组一直在越界使用
    cnt ++;又是啥操作
    数组长度的变量和输入个数不要使用同一个变量
    -=-=-=-=
    另,这题根本没必要存数组啊,过后又不排序,直接加完这数就没用了,存它干嘛
    -=-=-=
    又另,c语言是基于指针的,所以很多时候出现野指针也根本不报错,但是可能会把你内存数据搞的一团糟
    你应该庆幸debug的时候会报错,才能让你检查出很多问题,这些问题检查不出来会出更大的问题

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月26日

悬赏问题

  • ¥15 火车票关联12306问题
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表