为什么我被困在一个循环中?

时间:2015-02-01 21:27:18

标签: c++ loops if-statement while-loop

我根据自己的要求编辑问题,并清楚地表明我的错误。这个问题已得到解答。

为什么我陷入无休止的循环?我尝试了一些不同的技术,比如在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;

    }

2 个答案:

答案 0 :(得分:6)

while(recalculate=1)始终被评估为true,因为1被分配给recalculate,并且任何不等于零的数值都会被隐式转换为布尔值true。要测试相等性,请使用==,即

while(recalculate == 1)

答案 1 :(得分:1)

问题是=是作业,而不是比较:

if (recalculate = 0) {

上面将recalculate设置为零,然后将其计算为布尔表达式。为零,它总是计算为false,因此if的主体永远不会被执行。

编写比较的正确方法是==

if (recalculate == 0) {