当我尝试运行此程序时,我继续收到无限循环错误。谁能帮帮我,告诉我为什么?任何援助都将非常感激。谢谢!
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
}
答案 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);
请询问您是否还有其他问题。