Правила программирования на Си и Си++

       

Для битового поля размером 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

никогда не выполняется.



Содержание раздела