首页 >后端开发 >C++ >以下 C/C 代码中'c”的值是多少:'int a = 2;”布尔 b = a; int c = 3 b;`?

以下 C/C 代码中'c”的值是多少:'int a = 2;”布尔 b = a; int c = 3 b;`?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-19 20:53:02981浏览

What is the value of `c` in the following C/C   code: `int a = 2; bool b = a; int c = 3   b;`?

从 bool 到 int 的转换:保证值为 0 或 1

将 bool 值转换为 int 时会出现常见的误解。虽然许多编译器似乎将布尔值存储为 0 或 1,但问题仍然存在:这种行为是否得到保证?

问题:

考虑以下 C 代码片段:

int a = 2;
bool b = a;
int c = 3 + b; // 4 or 5?

c: 4 或的值是多少5?

答案:

是的,C 和 C 中的 c 始终为 4。

解释:

  • C :根据根据 C 标准 (§4.5/4),“bool 类型的右值可以转换为 int 类型的右值,其中 false 变为 0,true 变为 1。”因此,b 转换为 0。
  • C: 在 C (§6.3.1.2/1) 中,“当任何标量值转换为 _Bool 时,如果该值转换为 _Bool,则结果为 0比较等于 0;否则结果为 1。”这意味着 a 被转换为 1 并存储在 b 中。
  • 转换为 int: 从 _Bool 转换为 int 很简单,因为 int 可以同时保存 0 和 1 (§6.3.1.3) 。在这两种情况下,b 的值保持不变,导致 c 为 3 0 = 4。

以上是以下 C/C 代码中'c”的值是多少:'int a = 2;”布尔 b = a; int c = 3 b;`?的详细内容。更多信息请关注PHP中文网其他相关文章!

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