问题的答案的评论中出现了这个问题,当类型转换为 int 时,C/C++ bool 类型总是保证为 0 或 1?
有问题的代码分配了一个(本地)数组bool
而不初始化它们的值。
const int n = 100;
bool b[n];
显然,其中的值b
是不确定的。
一些评论者认为阅读 egb[0]
是未定义的行为。这在 C++ 标准中的任何地方都有说明吗?我仍然坚信相反的观点:
显然分配了存储并且基本 bool 类型的初始化已完成,因为它没有构造函数。因此,它肯定与取消引用未初始化的指针或在未初始化的非平凡对象上调用方法/强制转换运算符不同。标准似乎涵盖了这些特定情况。
这种行为在 C 中确实是未定义的:在 C中声明的、未初始化的变量会发生什么?它有价值吗?一些受访者似乎混淆了这两者。
在最新的 C++0x 草案中,我找不到不确定值的定义,尤其是没有允许访问此类值以触发处理器陷阱的定义。事实上,Bjarne Stroustrup 不确定什么是不确定值:http: //zamanbakshifirst.blogspot.com/2007/02/c-indeterminate-value.html