#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环境编译时结果正常
请问这是为什么
N = 8, a[] 数组范围 是 0..7
j 是 0 ..6,
i 是 0 .. 7, 这样, a[i +1] 就可能是 a[8], 越界了!
N-j-1最大值是7,因为14,17,18行的i+1最大值是8,超出了数组的上标N-1,所以出错了,删除=就正常了。
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y