AkaHarrison 2021-04-15 15:00 采纳率: 100%
浏览 73
已采纳

C语言冒泡排序数组越界

#include "stdio.h"

#define N 8

int main()
{
    int a[N]={9,8,3,7,5,2,6,1};
    int i,j,temp;

    for(j=0;j<=N-2;j++)
    {
        for(i=0;i<=N-j-1;i++)//出错行 去掉=时VS环境编译才正常
        {
            if (a[i] > a[i + 1])
            {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }
    }
    printf("Result\n");
    for(i=0;i<=N-1;i++)
    {
        printf("%3d",a[i]);
    }
    return 0;
}

IDE使用CLion 工具链使用Visual Studio时报错

CLion切换至MinGW环境编译时结果正常

请问这是为什么

  • 写回答

4条回答 默认 最新

  • SoftwareTeacher 《编程之美》作者 2021-04-15 15:15
    关注

    N = 8, a[] 数组范围 是 0..7

    j 是 0 ..6, 

    i 是 0 .. 7,  这样, a[i +1] 就可能是 a[8], 越界了! 

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误