随机变化的变量
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;
}
}
}
我试图在数组中找到一个 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;
}
}
}