Для битового поля размером 1 бит должен быть определен тип unsigned
После того, как ANSI Си позволил назначать битовому полю знаковый тип, мне доводилось видеть код, подобный:
struct fred
{
int i : 1;
}
a_fred;
Возможными значениями являются 0 и -1. Оператор типа:
#define TRUE 1
// ...
if( a_fred.i == TRUE )
// ...
не будет работать, потому что поле a_fred.i
может иметь значение 0 или -1, но оно никогда не будет равняться 1. Следовательно, оператор if
никогда не выполняется.