【发布时间】:2012-04-28 16:34:52
【问题描述】:
为什么未初始化的变量会打印一个奇怪的负值?
int x;
cout << x << endl;
【问题讨论】:
-
因为它没有初始化。它是内存中那个位置的任何字节。
-
基本上 x 指向一个之前可能已被填充的内存位置。您可能会看到该值。
-
因为该变量实际上是系统内存中某处的位置,除非您将某些内容放入该位置,否则您将获得上次使用该内存位置时留在该位置的任何垃圾.
-
@Wyzard:“不管字节是什么”实际上这也不对。在调试构建期间,编译器可以用某个值(0xcccccccc)填充未初始化的变量。所以单元化变量中有“一些”值,但很难说它会是什么。