С точки зрения кода, вы всегда можете определить размер в битах любого типа через:
#include <windows.h>
#include <limits.h>
sizeof (BOOL) * CHAR_BIT
Однако, с точки зрения семантики , число битов в BOOL должно составлять один . То есть все ненулевые значения BOOL должны обрабатываться одинаково, включая значение TRUE . FALSE (что равно 0) - это единственное другое значение, которое должно иметь различное значение. Чтобы строго следовать этому правилу, нужно немного подумать. Например, чтобы привести BOOL к персонажу, вы должны сделать следующее:
char a_CHAR_variable = (char) (0 != b_A_BOOL_variable);
(Если бы вы просто выполняли непосредственное приведение, то такие значения, как (1
char a_CHAR_variable = !!b_A_BOOL_variable;
Если вы пытаетесь использовать различные различные значения BOOL для какой-либо другой цели, скорее всего, то, что вы делаете, либо неверно, либо, по крайней мере, приведет к чему-то не поддерживаемому.
Именно из-за этих сложностей в языке C ++ фактически добавлен добросовестный тип bool.