问题出现在对Is C/C++ bool type always guaranteed to be 0 or 1 when typecast'ed to int?问题的答案的注释中
有问题的代码在不初始化其值的情况下分配了bool
的(本地)数组。
const int n = 100;
bool b[n];
显然,
b
中的值是不确定的。一些评论者认为阅读例如
b[0]
是未定义的行为。这在C++标准的任何地方都有说明吗?我仍然坚信相反的说法:最佳答案
是的,形式上不确定值的右值转换是UB(除了unsigned char
,最初我写了“和variants”,但是当我记忆起正式迎合1的补码字符时,可能用负0作为陷阱值)
我太懒了,无法为您做标准段落查找,也懒得关心它的降票
但是,在实践中,只有一个问题是(1)古老的体系结构,也许是(2)64位系统。
编辑:糟糕,我现在似乎想起了一个博客发布以及有关用于访问不确定char的正式UB的相关缺陷报告。因此,也许我将不得不实际检查标准+搜索DR。嗯,那将是稍后的时间,现在是咖啡!
EDIT2 :Johannes Schaub非常友善地提供了这个link to SO question,其中讨论了用于访问char的UB。所以,这就是我想起它的地方!谢谢,约翰尼斯。
干杯和健康。,