首页 > 解决方案 > 为什么没有影响的上升整数会使我的程序崩溃

问题描述

这是我的代码,它按预期工作。但是在添加一个上升整数后(即使它对代码没有影响)我的代码不能按预期工作


#include <iostream>

int i;
int j = 0;
int nums[] = {};
int co = 0;

void rq1() //rq = request
{
    std::cout << ("How many numbers?");
    std::cin >> i;
}

void rq2 () 
{
    int n2 = 0;
    for (int n = 1; n <=  i; n++) 
    { 
        std::cout << n2 + 1 << (". number?"); 
        std::cin >> nums[n2]; 
        n2++;
    }
}

void sort ()
{
    for (int n4 = 0; n4 < i; n4++)
    {        
        int k = j + 1;

        for (int n3 = 1; n3 < i; n3++) 
        {
            if (nums[j]==nums[k]) 
            {
                if (j<k) {std::cout << j << "," << k << std::endl; k++;}
                else {k++; return;}
            }
            else {k++;}
        }

        j++;        
    }
}

int main() 
{
    rq1();
    rq2();
    sort();    
} 

输入: 4 个数字 (1,2,1,2) 输出: (0 , 2) (1 , 3)

但添加co++后,输出为 (0,2) 但预期输出为 (0 , 2) (1 , 3)

{
    for (int n4 = 0; n4 < i; n4++ )
    {
        int k = j + 1;

        for (int n3 = 1; n3 < i; n3++) 
        {
            if (nums[j]==nums[k]) 
            {
            
                if (j<k) {std::cout << j << "," << k << std::endl; k++; co++;}
                else {k++; return;}
            }

            else {k++;}
        }

        j++;        
    }
}

我不知道为什么我的输出会改变。我的意思int co是不做任何其他事情

标签: c++

解决方案


int nums[] = {};

此数组变量没有元素。这在 C++ 中是不允许的。该程序格式不正确。

std::cin >> nums[n2];

在这里,您可以访问其边界之外的空数组。程序的行为是未定义的。

我不知道为什么我的输出会改变。

这是因为程序的行为是未定义的。


推荐阅读