【发布时间】:2011-12-01 11:30:32
【问题描述】:
考虑下面的 C++ 代码:
bool a = 5;
bool b = 6;
int c = (int)a + (int)b;
当我编译并运行此代码时,c 的值为 2。标准是否保证在任何编译器/平台中,使用 false (0) 或 true(不一定为 1)初始化的 bool 值在操作和代码中将为 1以上将始终导致 c 为 2?
在 C99 中,包括 stdbool.h,它仍然有效吗?
【问题讨论】:
-
我猜你的答案在这里:stackoverflow.com/questions/2725044/…
-
IMO,如果您将除 true/false 以外的其他内容分配给 bool 变量,则应该对它进行代码审查。
-
感谢@AlessandroPezzato 找到重复项
-
@Alessandro Pezzato 在那个问题中,他询问的是键值 true,而不是分配了非 0 或 1 值的变量。
-
@Max 通常会看到代码直接将指针分配给布尔值,以检查它是否不为 NULL。我知道首先与 NULL 进行比较是一种很好的做法,但有时人们在编码时会变得懒惰,只是对它进行评估。