当定义没有初始化的变量时,系统有可能会为我们进行隐式的初始化,至于系统是否帮我们隐式初始化变量,以及为变量赋予一个怎么的初始值,这要取决于该变量的类型以及变量的定义域。
1.内置类型变量的初始化
内置变量是否自动初始化,取决于该变量的定义域。
①在全局范围内的内置类型变量均被编译器自动初始化为0值
#include<iostream> using namespace std; //全局范围内的部分内部变量 int gi; //被自动初始化为0 float gf; //被自动初始化为0.0 double gd; //被自动初始化为0.0 char gc; //被自动初始化为'\0' int main(int argc, char **argv) { return EXIT_SUCCESS; }
②在函数体内定义的内置类型变量值随机(有的编译器可能会为你初始化为0,但千万别依赖于这种可能行为,因为它会给你的程序带来未定义的行为)
#include<iostream> using namespace std; int main(int argc, char **argv) { //局部范围内的部分内部变量 int i; //不被自动初始化,值随机(有可能是0,依编译器实现而定) float f; //不被自动初始化,值随机(有可能是0,依编译器实现而定) double d; //不被自动初始化,值随机(有可能是0,依编译器实现而定) char c; //不被自动初始化,值随机(有可能是0,依编译器实现而定) return EXIT_SUCCESS; }
③内置类型数组的初始化规则同上
#include<iostream> using namespace std; //全局范围内的内置类型数组 int gIntArr[5]; //5个元素都被初始化为0 int main(int argc, char **argv) { //局部范围内的内置类型数组 int intArr[5]; //未被初始化 return EXIT_SUCCESS; }
这里需要特别强调一点ÿ