随机变化的变量

时间:2015-01-12 19:11:12

标签: c++ arrays debugging

我正在尝试在数组中找到一个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。是什么导致变量切换?

2 个答案:

答案 0 :(得分:3)

有一件事非常错误,另一个问题是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;
        }
    }
}

答案 1 :(得分:1)

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

在阅读之前,您无法使用尺寸值...

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