涉及的代码分配了一个(本地)未初始化值的
bool
数组。const int n = 100;
bool b[n];
很明显,b
中的值是不确定的。
一些评论者认为,例如读取 b[0]
是未定义行为。C++ 标准中是否有这样的规定?我仍然坚信相反:
显然已分配存储并完成了基本布尔类型的初始化,因为它没有构造函数。因此,它肯定不同于解引用未初始化指针,或调用未初始化的非平凡对象的方法/转换运算符。标准似乎涵盖了这些特定情况。
在 C 中,行为确实是未定义的:What happens to a declared, uninitialized variable in C? Does it have a value?,一些答复者似乎混淆了两者。
在我找到的最新的 C++0x 草案中,我找不到任何关于不确定值的定义,也没有任何定义允许访问此类值触发处理器陷阱。事实上,Bjarne Stroustrup 不确定不确定值可能是什么:http://zamanbakshifirst.blogspot.com/2007/02/c-indeterminate-value.html