即使我将其留空,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)。如果您忘记和初始化,编译器将发出警告