有人能告诉我应该如何修复这个错误吗?我不能单独打印10到19的数字。
# include <iostream>
using namespace std;
int while_loop(int a)
{
a = 10;
while (a < 20)
{
a++ ;
return a;
}
}
int main()
{
int a, result;
result = while_loop(a);
cout << "The result of while_loop is : " << result << endl;
return 0;
}
在这种情况下,编译器并不完美:
int while_loop(int a)
{
a = 10;
while (a < 20)
{
a++ ;
return a;
}
}
由于最初将a设置为10,因此此循环将始终终止(仅在一次迭代之后(。但是,在一般情况下,while循环将运行多次或从不运行,这意味着您需要在循环之后添加return
语句。
您编写的代码不使用循环,因为由于循环中有无条件的return a;
,所以它总是返回11。你想要的可能是:
while (a < 20)
{
a++;
}
return a;
此外,主函数将一个未初始化的值传递给循环函数:
int a, result; // change that to int a = 10
result = while_loop(a);
然后您可以从函数内部删除CCD_ 3。
错误1
当你写道:
int a, result;
result = while_loop(a);//UNDEFINED BEHAVIOR
变量a
和result
具有不确定值,因为它们是内置类型(在本地范围内(,并且您尚未初始化它们。使用这些未初始化的变量会导致未定义的行为。因此while_loop(a)
导致了未定义的行为。
要解决此问题,应将a
初始化为10
,如下所示。
int a =10, result;//INITIALIZED a to 10
result = while_loop(a);
错误2
在while_loop
函数中,如果条件while (a < 20)
不满足,则控制流将不会遇到任何return
语句,因此您会收到上述警告。
要解决此问题,您可以将return a;
移动到while
循环之外,如下所示:
int while_loop(int a)
{
//a = 10;//NO NEED FOR THIS
while (a < 20)
{
a++ ;
}
return a;//return moved outside while
}
已更正程序
所以修改后的程序看起来像:
# include <iostream>
using namespace std;
int while_loop(int a)
{
//a = 10;NO NEED FOR THIS
while (a < 20)
{
a++ ;
}
return a;//return MOVED OUTSIDE while
}
int main()
{
int a = 10, result;//INITIALIZE a to 10
result = while_loop(a);
cout << "The result of while_loop is : " << result << endl;
return 0;
}