我是C ++的初学者,目前我正在学习如何做功能。最近我收到了以下练习:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
int a,sum=0;
cout<<"Enter a number:";
cin>>a;
int func(int x);
sum=func (a );
cout<<"\n"<<sum;
}
int func(int a)
{
int x;
for (int i=0; i<=a; i++)
{
x+=i;
}
return x;
}
我已经提前给了代码的int主要部分,我需要做的是完成int func
部分,以便代码正确执行。如果我运行此代码,我只会得到一些随机数。 func
应该做的是返回由用户估算的数量限制的所有自然数的总和。你能告诉我如何更改这段代码才能正常工作?感谢您的任何反馈!
答案 0 :(得分:5)
<强>错误:强>
int x
未初始化,因此会导致undefined behavior,而x
将为您提供任意随机值,而不是正确的总和。
可能的解决方案:
在对变量x
进行任何增量之前,请将其初始化为零,以确保它仅包含您要存储的值。
更新代码:
int func(int a)
{
int x = 0; //updated statement
for (int i=0; i<=a; i++)
{
x+=i;
}
return x;
}
希望这有帮助。
答案 1 :(得分:2)
您必须在 func 正文
中初始化 x.Parameters.Clear
答案 2 :(得分:1)
int x
未初始化。因此导致未定义的行为(这就是你得到随机数的原因)。你必须使用其中一个来初始化它:
int x=0;
int x(0);
int x{0};