int main()
{
int a;
cout << a;
return 0;
}
我想知道为什么输出值 0。我认为如果一个变量未初始化,它会输出一个垃圾值。
但是,我还记得听说整数的默认值为 0,所以我有点困惑。
C++ 中未初始化函数作用域(即本地)整数的默认行为是不确定,这很好; 但是如果在定义之前使用该值,则会引入未定义的行为,并且任何事情都可能发生 - 恶魔可能会从你的鼻子里飞出来。
cppreference 上的此页面提供了默认整数行为的示例。
另一方面,所有非局部、线程局部变量,而不仅仅是整数,都是零初始化。但这个案例没有包含在你原来的例子中。
(旁注:无论如何,简单地初始化变量并完全避免潜在危险通常被认为是良好的做法......特别是以全局变量的形式。)
在极少数特殊情况下,例如某些嵌入式系统,使用全局变量的最佳实践也有例外;它在启动时或在初始循环迭代期间根据传感器读数初始化值...并且需要在循环范围结束后保留一个值。
#include <iostream>
using namespace std;
int main(){
int a,b,c,d,e,f,g,h,i,j;
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
cout<<d<<endl;
cout<<e<<endl;
cout<<f<<endl;
cout<<g<<endl;
cout<<h<<endl;
cout<<i<<endl;
cout<<j<<endl;
return 0;
}
如果重新启动系统并尝试运行相同的程序,那么您很可能会得到垃圾值。
以上语句对于编译器未初始化的变量有效。