我的教授要求我们在c ++中使用while函数来编写我们正在编写的代码。我不断返回相同的错误,所以我写了一个简单的简单代码来理解while循环。仍然停留在这一部分。它显然不是我的程序的结束,我只是陷入while函数。有什么想法吗?
#include <iostream>
#include <cstdlib>
using namespace std;
void response (){
cout<<" Continue loop function?\n";
cout <<"y - yes\nn - no\n";
char response='y';
cin>> response;
return;
}
int main (){
response ();
while (response=='y')
return 0;
}
答案 0 :(得分:2)
您无法访问response
中的本地main()
变量功能。
在这一行
while (response=='y')
response
被解释为response()
函数的地址,与导致您看到错误的'y'
进行比较。
正如其他人所说,你应该有这样的东西
char response (){
cout<<" Continue loop function?\n";
cout <<"y - yes\nn - no\n";
char resp='y';
cin >> resp;
return resp;
}
int main (){
while (response()=='y'); // << also note the semicolon here
return 0;
}
答案 1 :(得分:2)
这里有几个问题。您的主要功能应该如下所示:
int main()
{
while (response() == 'y')
{ //must have either an empty body or a semicolon here,
//otherwise our return statement will become the loop body!
}
return 0;
}
此外,您的response()
函数应返回局部变量response
,以便将其值返回main
。由于范围原因,您无法在响应函数之外使用response
变量。
你的(错误的)主要功能当前做的是调用response()
函数,然后尝试将你的响应函数与char文字'y'
进行比较。但是,这不是比较刚从函数返回的值,而是比较函数本身的内存地址(指针)。
C ++允许您使用相同的变量和函数,但这通常是个坏主意。您可能希望为response()
函数或response
局部变量指定其他名称。
答案 2 :(得分:1)
正在等待布尔值。为了比较&#39; y&#39;为了响应,你必须将返回类型从void更改为char:
char response (){
cout<<" Continue loop function?\n";
cout <<"y - yes\nn - no\n";
char response='y';
cin>> response;
return response;
}