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

C语言数组排序后出现未初始化值33,求原因解释

数组排序后出现未初始化值33的原因

你的代码问题出在数组越界访问,具体看内层循环的条件:

for(j=i+1; j<7; j++)

你定义的数组arr是int arr[6],C语言数组下标从0开始,合法下标范围是0到5。但j<7会让j取值到6,此时访问arr[6]已经超出了数组的内存边界。

数组存放在栈内存中,边界外的区域属于栈里的其他未初始化内存,里面的值是随机的(这里恰好是33)。当排序逻辑执行到交换arr[i]和arr[6]时,这个随机值就被交换到数组的合法位置,最终打印时就出现了这个未初始化的33。

修复方法:把内层循环的条件改为j<6,确保只遍历数组的合法元素:

for(j=i+1; j<6; j++)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:27:04