为什么这个C ++程序将变量初始化为0?

时间:2015-10-11 13:31:26

标签: c++ c++11

int val1 = 0;
int val2 = 0;
int val3 = 0;

我不明白我为什么要放这些= 0,背后有什么意义吗?

3 个答案:

答案 0 :(得分:4)

将值初始化为0或其他任何值都是可选的。但是,如果你不这样做,变量可以包含任何东西......

答案 1 :(得分:4)

这实际上取决于 你声明变量。

如果将它们声明为局部变量(例如在函数内),那么编译器和运行时系统将不会初始化它们,它们的值将是 indeterminate 。除了初始化它们之外,使用这些变量将导致未定义的行为

如果将它们声明为全局变量,那么编译器和运行时系统将确保它们是零初始化的。

如果将变量声明为类或结构中的成员变量,那么它们的初始化取决于是否有构造函数。如果您拥有构造函数或默认构造函数,那么编译器将自动生成一个构造函数,该构造函数将默认构造(非静态)成员,{{1变量与零初始化相同。如果拥有构造函数,则(非静态)成员变量将像本地变量一样未初始化。

答案 2 :(得分:1)

声明新变量时,它存储在当前堆栈中。它可能在之前的使用中有垃圾,因此确保你的新变量初始值确实为0的唯一方法是在声明时将其设置为零