ВУЗ:
Составители:
Рубрика:
38
unsigned int eighth : 1;
} flags;
Теперь, для определения того или иного бита переменной flags достаточно
воспользоваться операцией
flags.first = 1;
flags.third = 1;
В этом случае будут установлены первый и третий биты, а остальные равны
нулю, что соответствует числу 5. Данное значение можно отобразить,
воспользовавшись функцией printf():
printf(“flags = %d.\n”,flags);
но переменной flags нельзя присваивать значения как обычной переменной, т.е.
следующий программный код будет неверным:
flags = 5; //неверно, так нельзя
Также нельзя присваивать значение flags переменным, например, следующая
запись приведет к сообщению об ошибке:
int var = flags; //ошибка, структуру нельзя присваивать
переменной
Так как поля first,…, eighth могут содержать только один бит информации,
то они принимают значения 0 или 1 для типа unsigned int и 0 и -1 - для типа
signed int. Если полю присваивается значение за пределами этого диапазона, то
оно выбирает первый бит из присваиваемого числа.
В общем случае можно задавать любое число бит для описания полей,
например
struct {
unsigned int code1 : 2;
unsigned int code2 : 2;
unsigned int code3 : 8;
} prcode;
Здесь создается два двух битовых поля и одно восьмибитовое. В результате
возможны следующие операции присваивания:
prcode.code1 = 0;
prcode.code2 = 3;
prcode.code3 = 128;
Страницы
- « первая
- ‹ предыдущая
- …
- 36
- 37
- 38
- 39
- 40
- …
- следующая ›
- последняя »