随机更改变量

Randomly changing variable

本文关键字:变量 改变 随机      更新时间:2023-10-16

我试图在数组中查找 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 时,当分配 arr[6] 时,变量 num 将变为 13。是什么导致变量切换?

有一件事非常错误,另一个问题是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;
        }
    }
}
int num, size;
int arr[size];
cin >> num >> size;

阅读之前,您不能使用大小值...

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