用C/C++求和bool值

fba*_*ipe 6 c++ c99

考虑下面的C++代码:

bool a = 5;
bool b = 6;
int c = (int)a + (int)b;
Run Code Online (Sandbox Code Playgroud)

当我编译并运行此代码时,c的值为2.标准是否保证在任何编译器/平台中,使用false(0)或true(不一定为1)初始化的bool值在操作中将为1,并且上面的代码将始终为导致c为2?

在C99中,包括stdbool.h,仍然有效吗?

Dav*_*rtz 10

C++标准的4.7节(整数版本)说:

如果源类型为bool,则将值false转换为零,将值true转换为一.

第4.9节对浮点转换提供了相同的保证.