使用 cin 的未初始化局部变量
uninitialized local variable with cin use
我正在编写这段代码(用 C++ 编写),我已经完成了,但是当我在关于变量 y 和 m 的 for 循环中使用它们时,第 19 行有 2 个错误,说它们是未初始化的局部变量。我不明白这是怎么可能的,因为我在开始时将它们声明为 int 并且当用户在 cin 中输入时它们的值被分配。
#include <iostream>
#include <string>
#include <cmath>
#include <math.h>
#include <vector>
using namespace std;
int main()
{
int a, b, n, l = 0;
cin >> a, b, n;
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 20; j++)
{
if (l < (i*a + j*b) && (i*a + j*b) <= n)
l = i*a + j*b;
}
}
cout << l;
return 0;
}
我无法对此进行测试,但 Multiple inputs on one line 建议您的语法应为
cin >> a >> b >> c;
无论如何,我认为编译器建议 cin 不能保证对所有变量的赋值,因此在声明它们时没有显式初始化你假设太多了。
我正在编写这段代码(用 C++ 编写),我已经完成了,但是当我在关于变量 y 和 m 的 for 循环中使用它们时,第 19 行有 2 个错误,说它们是未初始化的局部变量。我不明白这是怎么可能的,因为我在开始时将它们声明为 int 并且当用户在 cin 中输入时它们的值被分配。
#include <iostream>
#include <string>
#include <cmath>
#include <math.h>
#include <vector>
using namespace std;
int main()
{
int a, b, n, l = 0;
cin >> a, b, n;
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 20; j++)
{
if (l < (i*a + j*b) && (i*a + j*b) <= n)
l = i*a + j*b;
}
}
cout << l;
return 0;
}
我无法对此进行测试,但 Multiple inputs on one line 建议您的语法应为
cin >> a >> b >> c;
无论如何,我认为编译器建议 cin 不能保证对所有变量的赋值,因此在声明它们时没有显式初始化你假设太多了。