即使我将其留空,C++也会初始化变量的值,为什么会发生这种情况?

出于某种原因, 的值为final_sum16 但我没有为该变量初始化值,这是为什么呢?不是应该开始0吗?

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

int main()
{
    int n, sum, final_sum;

    cout<<"ff: "<<final_sum<<endl;
    cout<<"Input the value for n: ";
    cin>>n;

    for(int i=1; i<=n; i++){
        sum += i;
        final_sum += sum;
        cout<<"sum: "<<sum<<endl;
        cout<<"final sum: "<<final_sum<<endl<<endl;
    }
    return 0;
}

回答

不应该从 0 开始

不,它的初始值是未定义的。请参阅https://en.cppreference.com/w/cpp/language/default_initialization

具有自动存储持续时间的对象(及其子对象)被初始化为不确定的值。

如果你这样做

 int final_sum{}; 

或者

 int final_sum = 0; 

0的变量中会有一个。


我建议你使用-Wuninitialized(或更好-Wall)。如果您忘记和初始化,编译器将发出警告


以上是即使我将其留空,C++也会初始化变量的值,为什么会发生这种情况?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>