我正在尝试使用变量作为while
循环的参数,如下所示。
int compChoice;
while (compChoice < 8){
compChoice = rand() % 8 + 0;
cout << compChoice;
}
我的目标是生成一个随机数,直到输出为8。问题是我的编译器(visual studio pro 2013)告诉我变量未初始化。我删除了while
循环并将变量保留在那里并重试,然后编译器告诉我变量compChoice
未被引用。我也试过使用最后两行,它工作得很好。我认为我对这个论点做错了,但我无法弄清楚是什么。任何帮助将不胜感激。
答案 0 :(得分:2)
在while
分配compChoice
之前,您的compChoice
条件正在阅读int compChoice;
do {
compChoice = rand() % 8;
cout << compChoice;
} while (compChoice < 8);
的内容。考虑使用do-while循环,它将在检查条件之前执行一次循环体:
rand() % 8
然而,由于模数运算的定义,compChoice
保证小于8 ,因此您甚至无法正常工作。在编写代码时,循环永远不会终止(除非rand() % 9
中的未初始化值在首次读取时已小于8)。
也许您的意思是rand() % 8 + 1
或compChoice
?但这甚至没有意义,因为它只是将{8}分配给Sequential
的一种昂贵方式。看起来你需要退后一步,弄清楚你甚至想在这里做什么。
答案 1 :(得分:2)
在您的示例中,您的程序永远不会结束。
rand() % 8;
生成0到7之间的数字。所以你需要:
rand() % 8 + 1;
生成1到8之间的数字。
此外,您需要使用以下命令初始化rand:
#include <ctime>
和
srand(time(NULL));
在随机生成之前,
int compChoice=0;
循环之前
答案 2 :(得分:0)
在循环中使用它之前,您没有初始化compChoice
。所以,它有一个未定义的值。