慎用为初始化变量

指针:0xCCCCCCCC
c++的DEBUG版会把未初始化的指针自动初始化为 0xCCCCCCCC,
Debug为了调试方便,也就是其Edit And Continue特性,为每个函数都多分配了64个字节。当用户在调试时在代码里增加少量变量的时候,编译器就可以分配那64个字节的空间过去,这样就不用重新编译程序来重新调试。
int:-858993460(十六进制OXCCCCCCCC)(二进制11001100110011001100110011001100)
a、当一个未初始化赋值的时候(至少是vc 下未初始化的内存)默认是0xCCCCCCCC;,内存就默认保存为-858993460 即二进制的11001100 11001100 11001100 11001100;
b、如果变量的数据类型由于你的运算的溢出了,在内存中系统就自动改为-858993460
unsigned,unsigned long:3435973836 (OXCCCCCCCC)(11001100110011001100110011001100)
short: -13108 (0XCCCC)(1100110011001100)
char: -52 '?' 其中 -52为(0XCC)(11001100)
double,long double: -9.2559631349317831e+061
bool:true
 
所以针对下面的代码(c++ prime 第四版 例 2.17
 std::string global_str;              //输出的是空字符串
int global_int;                            //输出  0
int main()
 { int local_int;                         //输出:-858993460(未初始化)
std::string local_str;                //输出 空字符串
// ... return 0; }
 
定义变量最好是要赋初值。。

你可能感兴趣的:(慎用为初始化变量)