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

C++中两种数组打印写法输出结果不同的原因是什么?

结果不一致的核心原因

  • C++ 内置数组的默认索引规则是从0开始计数,长度为n的数组合法下标范围是0 ~ n-1,两段代码的遍历范围完全不重合,自然输出结果不同。
  • 第一段代码的遍历范围是a[0]到a[n-1],刚好覆盖数组的所有合法元素,是C++标准的数组遍历写法。
  • 第二段代码的遍历范围是a[1]到a[n],首先会直接漏掉数组第一个元素a[0],其次访问a[n]属于数组越界访问,这是C++中的未定义行为,读到的是内存中不确定的垃圾值,不仅会导致输出和第一段不符,严重时还会引发程序崩溃。

补充特殊场景:如果你是特意将数组的有效元素从下标1开始存储(比如部分算法题中为了简化逻辑会这么设计),那么第一段代码会额外输出a[0]的无效值,同时漏掉最后一个有效元素a[n],同样会出现输出不一致的问题。

举个直观示例:
假设数组定义为 int a[] = {1,2,3}, n = 3,有效元素存在0~2下标:

  • 第一段代码输出:1 2 3
  • 第二段代码输出为a[1]、a[2]、a[3]的内容,即2 3 [内存垃圾值],二者结果明显不同。

内容的提问来源于stack exchange,提问作者Anurag Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:45:03