在Array中进行比较时出错:分段错误

时间:2014-08-29 17:13:31

标签: c++

代码就像: -

#include <iostream>

using namespace std;
int main(int argc, char *argv[]) {
    int array[6]={1,2,3,4,5,6};
    for (int i = 0; i <= 5 ; i++){
        for (int j = 5; j <= i ; j--){
            if(array[i] + array[i+1] == array[j]){
                cout << array[i] << " + " << array[i+1] << " = " << array[j];
            }
        }
    }
}

我实际上是初学者,我的老师给了我一个问题,当我解决它时,我得到了错误。请告诉我错误是什么。

4 个答案:

答案 0 :(得分:2)

在您的第二个条件中,您for (int j = 5; j <= i ; j--){递减j,但请测试j是否小于i。它永远都是真的。 此外,j将变为-1,从而导致分段错误。

答案 1 :(得分:2)

if(array[i] + array[i+1] == array[j]){

您在i == 5时运行该行代码。这意味着您测试array[6],这是超出界限的。

答案 2 :(得分:1)

在循环的最后一次迭代&#34;对于i&#34;,我的值为5.

然后访问元素数组[i + 1],即数组[6],它不存在。数组值为array [0],array [1],...,array [5]。

答案 3 :(得分:0)

试试这段代码!

#include <iostream>

using namespace std;
int main(int argc, char *argv[]) {
    int array[6]={1,2,3,4,5,6};
    for (int i = 0; i <5  ; i++) //Fix 1
    {  //Run this loop till array[4] because in if condition you are accessing array[5] which is the last element of array
        for (int j = 5; j >= i ; j--) //Fix 2
        { //Run this loop till j is greater than i 
            if(array[i] + array[i+1] == array[j])
            {
                cout << array[i] << " + " << array[i+1] << " = " << array[j] << "\n";
            }
        }
    }
}

输出:

1 + 2 = 3
2 + 3 = 5