Цитата(HEX @ Jul 22 2009, 13:28)

я в этом вижу потенциальную проблему, например, при чтении бинарного файла данных.Придется производить доп. операции, что бы избавиться от мусора:
Естественно придется. Но несколько иначе:
Код
//data.bin = {0x0D, 0x00, 0x00, 0x00}
f = fopen("data.bin", "r");
uint8_t Tmp;
fread(&Tmp, sizeof(Tmp), 1, f);
B = Tmp;
fclose(f);
Все. Компилятор знает, как преобразовать внутреннее представление uint8_t во внутреннее представление bool. Не надо мешать ему, пытаясь сделать его работу через неявное преобразование при помощи указателей. А если в вашем компиляторе bool будет 32 бита, что вы считаете из файла вашим методом?
Цитата(HEX @ Jul 22 2009, 11:56)

Если бы не мешали я бы может и не заметил:
Код
//B = 13
if (B == true)
printf("true\n");
else
printf("false\n");
Еще раз: каким образом вы присвоили B значение 13? Оператором B = 13 вы не можете присвоить переменной типа bool значение, отличное от true и false. Если вы присвоили через указатель на другой тип - это жульничество, и компилятор ведет себя как считает нужным. Ибо запись B = 13 фактически означает B = bool(13), и 13 в B ну никак попасть не сможет.