注册 登录
编程论坛 C++教室

请教一个报错问题

鸡巴毛 发布于 2022-10-27 18:04, 1148 次点击

#include <stdio.h>

int main()
{
    int temp;
    int i = 0;
    int j = 0;
    int N = 10;
    int a[10]{ 5,6,2,9,7,3,6,4,1,3 };
    for (i = 0; i < N - 1; i++)
    for (i = 0; i < N - i - 1; j++)
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;

            }
}


编译的时候直接抛出了异常,13行,请问是什么原因导致的呢
2 回复
#2
rjsp2022-10-28 13:51
编译的时候直接抛出了异常
编译只会报错,不会抛异常;
异常是运行时抛出的。

13行,请问是什么原因导致的呢
如果时编译错误,贴出编译器给出的错误信息;
如果是运行时错误,看你的代码
    for (i = 0; i < N - 1; i++)
    for (i = 0; i < N - i - 1; j++)
有点儿奇怪,你是不是将两处 j 错写成 i 啦?
#3
lllyyy32022-10-28 22:27
看起来像是要写个冒泡,如果是的话,内层循环变量应该错了。
至于写成这样的错在哪里了,内层循环里i一直为0,i < N - i - 1会一直成立,导致j一直在++,直到a[j]出现下标越界问题。
还有就是2楼r老师说的,编译不会抛异常,异常是运行时抛出的。
1