输出上的随机数 我是一个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; } #包括 #包括 使用名称空间std; int main(int argc,char*argv[]) { int a,和=0; 库塔; int func(int x); sum=func(a); cout

输出上的随机数 我是一个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; } #包括 #包括 使用名称空间std; int main(int argc,char*argv[]) { int a,和=0; 库塔; int func(int x); sum=func(a); cout,c++,function,C++,Function,int x未初始化。因此会导致未定义的行为(这就是为什么会有随机数)。您必须使用以下其中一种进行初始化: int x=0; int x(0); int x{0}; 必须在func body中初始化x 错误: int func(int a) { int x = 0; //updated statement for (int i=0; i<=a; i++) { x+=i; } return x; } int x未

int x
未初始化。因此会导致未定义的行为(这就是为什么会有随机数)。您必须使用以下其中一种进行初始化:

int x=0;
int x(0);
int x{0};
必须在func body中初始化x


错误:

int func(int a)
{
    int x = 0; //updated statement

    for (int i=0; i<=a; i++)
    {
        x+=i;   
    }
    return x;      
} 
int x
未初始化,因此它将导致出现错误,
x
将给出任何随机值,而不是正确的总和

可能的解决方案:

int func(int a)
{
    int x = 0; //updated statement

    for (int i=0; i<=a; i++)
    {
        x+=i;   
    }
    return x;      
} 
在对变量
x
进行任何增量之前,请将其初始化为零,以确保它仅包含要存储的值

更新代码:

int func(int a)
{
    int x = 0; //updated statement

    for (int i=0; i<=a; i++)
    {
        x+=i;   
    }
    return x;      
} 
int func(int a)
{
int x=0;//更新的语句

for(int i=0;iint x{0};//此语句只能在c++11中使用。此外,它不允许缩小。非常感谢Itban。我添加了“=0”后,问题就解决了。这是我方面的一个非常不幸的错误,因为我没有注意到代码中的谬误。无论我如何称赞您构建的解决方案,它都非常清晰简洁。欢迎@Noir:)我只是试图提供一个清晰的解决方案