c++ - C++ 中的变量初始化

标签 c++ variables initialization

我的理解是一个int变量会自动初始化为0;然而,事实并非如此。下面的代码打印一个随机值。

int main () 
{   
    int a[10];
    int i;
    cout << i << endl;
    for(int i = 0; i < 10; i++)
        cout << a[i] << " ";
    return 0;
}
  • 哪些规则(如果有)适用于初始化?
  • 具体来说,在什么情况下变量会自动初始化?

最佳答案

会自动初始化

  • 它是一个类/结构实例,其中默认构造函数初始化所有原始类型;比如 MyClass 实例;
  • 您使用数组初始值设定项语法,例如int a[10] = {}(全为零)或 int a[10] = {1,2};(除前两项外全为零:a[0] == 1a[1] == 2)
  • 同样适用于非聚合类/结构,例如我的类实例 = {}; (更多信息请见 here)
  • 这是一个全局/外部变量
  • 变量是定义的static(无论是在函数内部还是在全局/命名空间范围内)-感谢 Jerry

永远不要相信一个普通类型的变量(int、long、...)会自动初始化!它可能发生在 C# 等语言中,但不会发生在 C 和 C++ 中。

关于c++ - C++ 中的变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2218254/

相关文章:

c++ - 在同一个对象上创建多个 shared_ptr "families"时 shared_from_this 的意外行为

javascript - 在对象名称的第一部分使用 javascript 变量

c++ - "surprising"常量初始化因为定义顺序

swift - UIView 子类在初始化时固定高度

c++ - 子进程的异步双向 IO 重定向

c++ - 这两行代码的区别和好处是什么?

javascript - 对象上下文中的变量

objective-c - 星号有时在变量类型上,有时在变量名上。为什么?

c++ - 如何使用 scons 生成带有调试信息的 MSVC 解决方案?

javascript - 将参数传递给函数,参数不会变成变量