csg*_*guy 2 c++ variables initialization
int main()
{
int a;
cout << a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么要输出值 0。我想如果一个变量未初始化,它会输出一个垃圾值。
但是,我也记得听说整数的默认值是 0,所以我有点困惑。
谢谢
C++ 中未初始化的函数作用域(即局部)整数的默认行为是它是不确定的,这很好;但是,如果在定义之前使用该值,则会引入未定义的行为,并且任何事情都可能发生 -恶魔可能会飞出您的鼻子。
cppreference上的此页面提供了默认整数行为的示例。
另一方面,所有非局部、线程局部变量,而不仅仅是整数,都是 零初始化的。但是这种情况未包含在您的原始示例中。
(旁注:无论如何,简单地初始化变量并完全避免潜在的危险通常被认为是一种很好的做法......特别是在全局变量的形式中。)
在极少数特殊情况下使用全局变量的最佳实践有例外,例如某些嵌入式系统;根据启动时或初始循环迭代期间的传感器读数初始化值......并且需要在循环范围结束后保留一个值。
| 归档时间: |
|
| 查看次数: |
1903 次 |
| 最近记录: |