首页  >  文章  >  后端开发  >  bool 转换为 int 是否保证为 0 或 1?

bool 转换为 int 是否保证为 0 或 1?

DDD
DDD原创
2024-11-15 09:42:02297浏览

Is bool Conversion to int Guaranteed to Be 0 or 1?

bool 转换为 int:保证为 0 或 1?

问题:

许多编译器似乎存储 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn