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

为何C语言代码未输出预期结果10 25 36 42?

问题解答

问题1:为何未显示预期输出?

  • 循环条件错误引发数组越界访问:sizeof(array)/sizeof(int)计算结果为4,循环条件i < 4会让i从-1一直迭代到3,此时循环体中array[i+1]会访问array[4],超出了数组的合法索引范围(数组仅支持0-3的索引)。
  • 数组越界属于C语言中的未定义行为,会输出随机垃圾值,最终输出会比预期多一个无效内容,破坏了10 25 36 42的预期结果。

问题2:为何这段代码没有输出?

  • 代码本身具备输出逻辑,若未看到输出,大概率是数组越界触发了程序崩溃(不同编译器、运行环境对未定义行为的处理存在差异),导致程序在完成打印前就终止,从而无输出或输出不完整。
  • 极少数情况下,若运行环境未及时刷新输出缓冲区,也可能导致输出未显示,但核心诱因仍是数组越界引发的未定义行为。

修复方案

调整循环条件或变量起始值,确保仅访问数组的合法索引:

#include <stdio.h>

int main() {
    int i;
    int array[4] = {10, 25, 36, 42};
    int size = sizeof(array) / sizeof(int);
    for (i = 0; i < size; i++) {
        printf("%d ", array[i]);
    }

    return 0;
}

修改后可准确遍历数组的4个元素,输出预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:07:05