我正在使用 CodeBlocks 13.12,g++ 编译器和我的局部变量都被初始化为 0。
我想知道是否有办法避免编译器将我的所有变量设置为 0。我希望它们具有垃圾值(value)。
例如:
#include <iostream>
using namespace std;
int main(){
int a, b;
cout << a << " " << b;
return 0;
}
输出是: 0 0
我不希望 a 和 b 为零。它们应该包含垃圾值。
提前致谢
最佳答案
编译器在使用/不使用优化构建时在这方面表现不同。我猜你是在没有优化的情况下构建,这就是编译器零初始化变量的原因。
但是,说到这里;不要四处阅读未初始化的变量。那是未定义的行为。虽然你可能经常得到一个“垃圾”值,但编译器实际上可以在发现你的程序未定义时随意生成它想要的任何代码。这包括根本不发出任何代码、发出您期望的代码以及重写程序的其他部分。 不要调用未定义的行为。
如果您想要一个随机值,请使用 <random>
设施- http://en.cppreference.com/w/cpp/numeric/random
关于C++ 标量变量设置为零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38104037/