问题:
许多编译器似乎存储 bool值为 0 或 1,但这种行为是否有保证?具体来说,在以下代码片段中:
int a = 2; bool b = a; int c = 3 + b; // 4 or 5?
答案:
是的,bool 值在转换为 int 时保证转换为 0 或 1。此行为在 C 和 C 标准中都有定义:
C (§4.5/4):
bool 类型的右值可以转换为 bool 类型的右值类型 int,其中 false 变为 0,true 变为 1。
C (§6.3.1.2/1):
当任何标量值转换为 _Bool 时,如果值比较等于 0,则结果为 0;否则,结果为 1。
因此,在给定的示例中,b 将转换为 0(如果 a 不等于 0)或 1(如果 a 等于 0)。 b 加 3 将得到 4 或 5,具体取决于 a 的值。
以上是bool 转换为 int 是否保证为 0 或 1?的详细内容。更多信息请关注PHP中文网其他相关文章!