【发布时间】:2011-04-06 15:34:05
【问题描述】:
鉴于此代码:
void main()
{
int x;
cout << x;
system("pause");
}
当我调试这段代码时,它总是打印 -858993460A。我读到它是因为 VS 将此设置为 Unitialized vars 的默认值。但我也读到在发布模式下,这应该得到随机值。但是每次我在发布模式下运行此代码时,我都会得到 1772893972A ,它不会改变 -> 它不是随机的。这是什么?为什么我会得到这个值?
【问题讨论】:
-
这几乎肯定是在调用 main 之前执行的 C 运行时代码留在堆栈空间中的值。 x 在栈上的位置保持不变,并且每次运行时执行的步骤都是一样的,所以栈上留下的值是一样的。
-
用“indeterminate”代替“random”可能会消除混乱。该值不是严格随机意义上的“随机”,但您无法控制它的值。
-
另外,C++ 标准不允许
void main()。请改用int main()。它保证按标准工作,并且可以少输入一个字符。 (您从哪里读到未初始化的int应该有一个随机值?标准使用“不确定”这个词。) -
是的,对不起,我的错,它是不确定的。我只是随机关联,不知道为什么。
标签: c++ default int initialization