C ++标量变量设置为零值

时间:2016-06-29 15:30:46

标签: c++

我正在使用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为零。它们应该包含垃圾值。

提前致谢

1 个答案:

答案 0 :(得分:2)

在使用/不使用优化构建时,编译器在这方面的行为有所不同。我猜你在没有优化的情况下构建,这就是编译器零初始化变量的原因。

但是,如果说的话;不要去阅读未初始化的变量。这是未定义的行为。虽然你可能经常只是得到一个垃圾&#39;值,编译器实际上可以自由地生成任何代码,当它看到您的程序未定义时。这包括根本不发出任何代码,发出您期望的代码以及重写程序的其他部分。 Don&#t> 调用未定义的行为。

如果您想要随机值,请使用<random>工具 - http://en.cppreference.com/w/cpp/numeric/random