在C++中初始化多个bool

j0h*_*j0h 0 c++ boolean

我在 C++ 程序中有一些输入标志,它们一开始都是 false。我想如果我能将它们全部初始化为 false 就好了。所以我尝试:

bool flagA, flagB, flagH = false;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试这个时,标志没有正确设置。flagA 显然被初始化为true?明确设置标志是有效的。

bool flagA = false;
bool flagB = false;
bool flagH = false;
Run Code Online (Sandbox Code Playgroud)

我正在使用 g++,并且没有收到编译器错误或警告。我知道程序行为不当,因为 flagA 设置为 true 时会将程序输出发送到本地打印机。就是想。

Zer*_*ges 5

当编译器看到bool flagA, flagB, flagH = false;他翻译为

用户需要三个bool值,namedflagAflagBflagC哦,并且flagC应初始化为false.

只是写得比较短

bool flagA;
bool flagB;
bool flagC = false;
Run Code Online (Sandbox Code Playgroud)

而且由于它们(可能)是局部范围变量,因此不保证用默认值初始化它们。