使用此代码,我试图构建一个由用户输入的整数值的数组。变量“int selection”是一个int,所以如果输入的值是一个int,while循环应该继续,但值0似乎结束它,我无法弄清楚原因。谢谢你的帮助。
int main()
{
//data to be entered
int selection;
//array size
int const array_size = 100;
//array
int integers[array_size];
//array index
int index = 0;
//prompt
std::cout << "Enter integer ('x' to quit): " << std::endl;
//get the data
std::cin >> selection;
//while data is int
while (selection)
{
//put it in the array
integers[index] = selection;
//increment index
index += 1;
//get new data point
std::cin >> selection;
}
return 0;
}
答案 0 :(得分:2)
此代码不会执行评论所说的内容:
//while data is int
while (selection)
数据始终为int
,无法在int
变量中存储任何其他内容。
代码实际上做的是在值为非零时循环。
答案 1 :(得分:1)
因为布尔上下文中的0
被解释为false
。
答案 2 :(得分:0)
false
在C ++中被解释为0
。同样,0
被解释为false
。
因此,当selection
为0
时,循环有效地变为:
while ( false )
{
...
}
没有运行。
另一方面,当selection
不是0
时,C ++将其视为true
并且循环将运行。
编辑: 如果要在输入为整数时循环,请尝试
while (std::cin >> selection)
{
...
}
答案 3 :(得分:0)
这就是代码现在如何运作的方式。谢谢你们所有的帮助
int main()
{
//data to be entered
int selection;
//array size
int const array_size = 100;
//array
int integers[array_size];
//array index
int index = 0;
//prompt
std::cout << "Enter integer ('x' to quit): " << std::endl;
//while data is int
while (std::cin >> selection)
{
//put it in the array
integers[index] = selection;
//increment index
index += 1;
}
return 0;
}
答案 4 :(得分:0)
while (selection)
不再是selection
时, int
不会停止; selection
总是 int
。
while (selection)
不等于selection
时, 0
会停止。
您应该测试>>
操作的结果。