随机变化的变量

Randomly changing variable

我试图在数组中找到一个 int 实例,然后打印出该 int 的索引。问题是我用来存储我正在检查的数字的变量在输入中间不断变化。

int num, size;
int arr[size];

cin >> num >> size;

for (int i = 0; i < size; i++){
    cin >> arr[i];
}

for (int i = 0; i < size; i++){
    if (arr[i] == num){
        cout << i << endl;
        return 0;
    }
}

return 0;

输入是这样的:

23
12
1 3 5 7 9 11 13 15 17 19 21 23

在输入数组arr 时,变量num 在arr[6] 赋值时变为13。是什么导致变量切换?

int num, size;
int arr[size];
cin >> num >> size;

您不能在阅读之前使用尺寸值...

int num, size;
cin >> num >> size;
int arr[size];

有一件事很不对劲,另一个问题是 C++ 兼容性。

这两行:

int num, size;
int arr[size];  // wrong.

您正在初始化一个值为 size 的数组。但是 size 的值是多少?它尚未设置,因此它将是一些随机值。也许会是 6, 100, 0, 843241, -342,你不知道。

此外,假设您在声明数组之前确实 正确设置了size。使用变量声明数组不是标准的 C++。必须使用常量表达式声明数组。

如果您希望您的程序既正确又符合标准 C++,请使用 std::vector

#include <vector>
#include <iostream>
using namespace std;

int main()
{
    int num, size;
    cin >> num >> size;
    std::vector<int> arr(size);
    for (int i = 0; i < size; i++)
        cin >> arr[i];

    for (int i = 0; i < size; i++)
    {
        if (arr[i] == num)
        {
            cout << i << endl;
            return 0;
        }
    }
}