Consider the C++ code below:
bool a = 5;
bool b = 6;
int c = (int)a + (int)b;
When I compile&run this code, c has the value 2. Does the standard guarantee that, in any compiler/platform, bool values initialized with false (0) or true (not necessarily 1) will be 1 in operations and the code above will always result in c being 2?
And in C99, including stdbool.h, is that still valid?