C ++中的无限循环

时间:2013-07-03 16:15:52

标签: c++ loops

当我尝试运行此程序时,我继续收到无限循环错误。谁能帮帮我,告诉我为什么?任何援助都将非常感激。谢谢!

    void Increment(int);
    int main()
    {
      int count = 1;
      while(count < 10)
      cout << "the number after " << count; //Increment function
      Increment(count); //count+1
      cout << " is " << count << endl;
      return 0;
    }
    void Increment (int nextNumber)
    {
      nextNumber++; //parameter +1
    }

8 个答案:

答案 0 :(得分:8)

你是通过值而不是通过引用传递的:

请改为:

void Increment (int& nextNumber)
{
  nextNumber++; //parameter +1
}

此外,您缺少while循环的结束括号。

答案 1 :(得分:4)

如果while循环使用多行,则需要大括号。实际上,你应该总是使用大括号来避免混淆。此外,您的Increment函数应该通过引用获取其参数,因此它不会在副本上运行(导致无限循环的另一个原因):

void Increment(int&);

int main()
{
    int count = 1;

    while (count < 10)
    {
        std::cout << "the number after " << count;
        Increment(count);
        std::cout << " is " << count << std::endl;
    }
}

void Increment(int& nextNumber)
{
    nextNumber++;
}

答案 2 :(得分:4)

while(count < 10)
    cout << "the number after " << count; //Increment function

这是一个无限循环,因为count 总是相同的值,并且不会被此循环更改。

这就是必须围绕循环括号({})的原因,否则你会犯这样的错误。

重新编写代码,并说明发生了什么:

void Increment(int);
int main()
{
  int count = 1;
  while(count < 10) 
  {
      cout << "the number after " << count; //Increment function
  }
  Increment(count); //count+1
  cout << " is " << count << endl;
  return 0;
}


void Increment (int nextNumber)
{
  nextNumber++; //parameter +1
}

答案 3 :(得分:1)

有两个主要问题,你缺少while循环的大括号,应该如下:

while(count < 10)
{
    cout << "the number after " << count; //Increment function
    Increment(count); //count+1
    cout << " is " << count << endl;
}

第二个问题是,您按价值将count传递给Increment,如果您想更新count,可以通过引用传递:

 void Increment (int &nextNumber)

答案 4 :(得分:1)

您按值count传递,因为它没有递增。按值传递意味着在函数中使用变量的本地副本,它不会影响原始变量。您需要使用& operator传递地址。你可以使用它: -

void Increment (int& nextNumber)
{
  nextNumber++; 
}

您还没有用大括号{ } while循环括起来,这会对程序的执行产生不良影响。

答案 5 :(得分:1)

您的Increment函数不执行任何操作,因为它按值接受参数nextNumber 。这意味着它在传递给它的变量的副本上运行,因此当函数退出时它的更改将丢失。相反,让它通过引用接受变量

void Increment (int &nextNumber)
    {
      nextNumber++; //parameter +1
    }

您还必须使用while围绕{}循环中的代码:

  while(count < 10)
  {
    cout << "the number after " << count; //Increment function
    Increment(count); //count+1
    cout << " is " << count << endl;
  }

答案 6 :(得分:1)

  while(count < 10)
  cout << "the number after " << count; //Increment function

你需要括号,否则while只会一遍又一遍地执行cout而不执行增量函数

答案 7 :(得分:0)

你通过值传递的问题。当你将数字传递给Increment时,它会生成一个名为nextNumber的副本并递增它。这​​个更改不会反映在发送的参数中。因此,计数从未增加。

要纠正,您可以从递增值返回值或调用参考值。

按值调用

int Increment (int nextNumber)
{
  return nextNumber+1; //parameter +1
}

这里的电话声明是:

count=Increment(count);

按推荐致电:

我假设您不知道这意味着什么,基本上您将传递变量的地址,这样您就不会在增量中复制,而是处理原始变量本身。

void Increment (int& nextNumber)
{
  nextNumber++; //parameter +1
}

这里的电话声明:

 Increment(count);

请询问您是否还有其他问题。