我根据自己的要求编辑问题,并清楚地表明我的错误。这个问题已得到解答。
为什么我陷入无休止的循环?我尝试了一些不同的技术,比如在if语句中引入break语句,甚至只是在那里抛出break语句。但是我仍然陷入困境。
while (recalculate = 1){
cout << "\nEnter in the radius of the sphere: ";
cin >> radius;
cout << "\nEnter in the weight of the sphere: ";
cin >> weight;
cout << "\n";
if (bForce > weight)
{
cout << "\nEgads, it floats!\n";
}
else {
cout << "\nIt sunk...\n";
}
cout << "\nRecalculate? (1 = yes, 0 = exit)\n";
cin >> recalculate;
// See what recalculate really is.
cout << "\n" << recalculate;
}
答案 0 :(得分:6)
while(recalculate=1)
始终被评估为true,因为1被分配给recalculate
,并且任何不等于零的数值都会被隐式转换为布尔值true
。要测试相等性,请使用==
,即
while(recalculate == 1)
答案 1 :(得分:1)
问题是=
是作业,而不是比较:
if (recalculate = 0) {
上面将recalculate
设置为零,然后将其计算为布尔表达式。为零,它总是计算为false,因此if
的主体永远不会被执行。
编写比较的正确方法是==
:
if (recalculate == 0) {