C++ 添加IF语句时出错
如果我没有C++ 添加IF语句时出错,c++,C++,如果我没有if语句,循环工作正常,但是一旦我添加了它,代码就不再运行了。它在构建时没有问题。我可以看出我在运行repNum时没有初始化它 代码如下: #include<iostream> using namespace std; int main() { int repNum; int prodSold; int prodPrice; int repTotal; int numReps = 0; if (repNum >0 &a
if
语句,循环工作正常,但是一旦我添加了它,代码就不再运行了。它在构建时没有问题。我可以看出我在运行repNum时没有初始化它
代码如下:
#include<iostream>
using namespace std;
int main()
{
int repNum;
int prodSold;
int prodPrice;
int repTotal;
int numReps = 0;
if (repNum >0 && repNum < 21)
{
for(int numReps = 0; numReps <= 20; numReps ++)
{
cin >> repNum;
cin >> prodSold;
cin >> prodPrice;
repTotal = prodSold * prodPrice;
cout << "Agent #" << repNum << " sold " << prodSold << " packages at $" << prodPrice <<
" for a dollar value of $" << repTotal << endl;
}
}
else
{
cout << "***Invalid Agent***" << endl;
}
}
#包括
使用名称空间std;
int main()
{
INTREPNUM;
int PRODSELD;
国际产品价格;
勇敢的代表;
int numReps=0;
如果(repNum>0&&repNum<21)
{
对于(int numReps=0;numReps>repNum;
cin>>产品已售出;
cin>>产品价格;
repTotal=产品售出*产品价格;
cout当条件执行(repNum>0&&repNum<21)
时,变量repNum
仍然未初始化,这就是为什么会出现错误。您应该初始化repNum。否则您将无法比较repNum大于0,因为repNum没有值。如果您希望这样,只需设置repNum-1
顺便说一句,如果程序的另一个点上有一个repNum的值,那么只在if语句中请求repNum是有意义的。这里是否缺少代码?非静态变量的非初始化可能会导致变量被分配一些垃圾值
在您的情况下,您尚未初始化repNum,这可能会被分配一些垃圾值。然后,您可以根据if语句中的某个表达式检查这些垃圾值,这可能会导致未定义的行为。您遇到未定义的行为,原因是:
你也应该考虑使用<代码> Auto <代码>,因为它会迫使你将它初始化为一个值:
auto repNum = 0u;
如果您尝试以下方法
auto repNum;
您将得到一个编译器错误
目前的情况是,编译时应该会收到警告。如果您打开编译器警告设置,应该会收到警告。正如您所说的,这是一个单位化变量问题。在这种情况下,您可以使用do while
进行If
检查。因此,使用do while
从用户处获取所有变量的输入es,则当条件被接受时,您有权进行for
循环
假设您希望获得20次有效输入:
int i = 0;
do
{
cin >> repNum;
if (repNum >0 && repNum < 21)
{
for(int numReps = 0; numReps <= 20; numReps ++)
{
cin >> prodSold;
cin >> prodPrice;
repTotal = prodSold * prodPrice;
}
i++;
}
else
{
cout << "***Invalid Agent***" << endl;
i--;
}
} while (i < 20);
inti=0;
做
{
cin>>雷普纳姆;
如果(repNum>0&&repNum<21)
{
对于(int numReps=0;numReps>prodsall;
cin>>产品价格;
repTotal=产品售出*产品价格;
}
i++;
}
其他的
{
你为什么不初始化repNum?你必须这样做才能让它工作。其他人都诊断了你的问题。但是,你已经声明了numReps
的两个独立副本。这不会在这里造成问题,但如果你不花时间理解它,它会在你未来的代码中出现。因为numReps
已经声明了,您的for
-循环应该开始for(numReps=0;…
auto repNum;
int i = 0;
do
{
cin >> repNum;
if (repNum >0 && repNum < 21)
{
for(int numReps = 0; numReps <= 20; numReps ++)
{
cin >> prodSold;
cin >> prodPrice;
repTotal = prodSold * prodPrice;
}
i++;
}
else
{
cout << "***Invalid Agent***" << endl;
i--;
}
} while (i < 20);