Avatar ·

未初始化的bool是否会导致C++程序崩溃?

你好!我最近开始学习C++,遇到了一个奇怪的情况。我有这样一段代码: ```cpp #include int main() { bool flag; // 未初始化 if (flag) { std::cout << "True" << std::endl; } else { std::cout << "False" << std::endl; } return 0; } ``` 在我的编译器上(Ubuntu上的g++),它稳定输出"False",程序运行正常。但我听说使用未初始化的变量是未定义行为(undefined behavior)。这是否意味着程序真的可能崩溃?毕竟bool只是一个字节,可能是0或1,即使它包含垃圾值,对true/false的检查也应该能正常工作,对吧? 我特别关心通过LLVM/Clang编译的情况。我读到过那里可能存在一些优化,会对bool做出意想不到的处理。编译器是否会生成导致segmentation fault或无限循环的代码?还是说这些只是理论上的风险?