如果定义变量时没有指定初始值,则变量被默认初始化,此时变量被赋予“默认值”。
分两种情况:函数体内部初始化与函数体之外初始化。
函数体之外初始化无论什么类型的变量都会有对应的固定的默认值。但是函数体内部初始化时,C++的基本内置类型的变量将被赋予一个随机值!
根据《C++Primar(第5版)》2.1可知,C++的基本内置类型包括算术类型和空类型:算术类型包括:整形数、浮点数、字符,布尔值,如下图所示;空类型如函数返回值类型void。 注意,string类型不属于基本内置类型!
所以如果有以下代码:
#include<iostream> using namespace std; #include<vector> #include<string> //以下注释为变量默认初始化之后的值 //(1)函数体之外的变量 int i;// 0 char c;// '\0' string s;// "" bool b;//false int main() { //(2)函数体之内变量 int i2;// -858993460 char c2;// -52'?' string s2;// "" cout << endl; system("pause"); return 0; }
默认初始化之后的结果在注释中,可以看到对于基本内置类型(int char等),在函数体内部默认初始化时会产生一个随机的值。对于非基本内置类型(string等),无论是在函数体内部还是外部,默认初始化产生的值都是一样的,不存在“随机”问题。