我正在使用CodeBlocks 13.12,g ++编译器和我的局部变量都被初始化为0。
我想知道是否有办法避免编译器将0设置为我的所有变量。我想在它们中有垃圾价值。
例如:
#include <iostream>
using namespace std;
int main(){
int a, b;
cout << a << " " << b;
return 0;
}
输出是: 0 0
我不希望a和b为零。它们应该包含垃圾值。
提前致谢
答案 0 :(得分:2)
在使用/不使用优化构建时,编译器在这方面的行为有所不同。我猜你在没有优化的情况下构建,这就是编译器零初始化变量的原因。
但是,如果说的话;不要去阅读未初始化的变量。这是未定义的行为。虽然你可能经常只是得到一个垃圾&#39;值,编译器实际上可以自由地生成任何代码,当它看到您的程序未定义时。这包括根本不发出任何代码,发出您期望的代码以及重写程序的其他部分。 Don&#t> 调用未定义的行为。
如果您想要随机值,请使用<random>
工具 - http://en.cppreference.com/w/cpp/numeric/random