为什么这个for循环不会停止

时间:2014-12-14 21:00:14

标签: c++ loops infinite

我一直在看这段代码20分钟,我无法理解为什么这个循环是无限的,它应该打印30个元素。谁能解释一下?请

    #include <iostream>
#include <iomanip>

using namespace std;

void arSaugu(double btc, double sum){
    if (sum < btc){
        cout << " SAUGU" << endl;
    } else {
        cout << " NESAUGU" << endl;
    }
    return;
}


int main(){
    double btc, bet, kof, sum, kof1;
    cout << "Iveskite kiek turite btc:" << endl;
    cin >> btc;
    cout << "Iveskite, koks bet'as:" << endl;
    cin >> bet;
    cout << "Iveskite, koks kofas:" << endl;
    cin >> kof;
    sum = bet;
    kof1 = kof;
    for (int i = 1; i < 31; i++){
        if (i = 1){
            kof1 = 1;
        } else {
            for (int j = 1; j < i; j++){
                kof1 = kof1*kof;
            }
        }
        cout << i << ". " << bet*kof1; arSaugu(btc, sum);
        sum = sum + (bet*kof1);
        kof1 = 0;
    }
    return 0;
}

有些文字,因为帖子主要是代码。

3 个答案:

答案 0 :(得分:1)

在使用C(++)进行编程时,这是一个常见错误,在早期,人们将等于运算符==误认为赋值运算符=

你在这里用if (i = 1){行做的是在循环的每次迭代中将i设置为1,所以我永远不会变大。
要解决此问题,只需将该行更改为if (i == 1) {

即可

答案 1 :(得分:0)

我猜是因为if (i = 1)1分配给i。您打算比较if (i == 1)

答案 2 :(得分:0)

if语句错误。它应该是

if(i == 1)

当前在每个循环上,你将i分配回1.因此循环无限的原因