Возможный дубликат:
Что означает "unsigned temp: 3" означает
Это образец кода C ссылочной страницы.
signed int _exponent:8;
Какое значение толстой кишки перед "8" и "8"?
Возможный дубликат:
Что означает "unsigned temp: 3" означает
Это образец кода C ссылочной страницы.
signed int _exponent:8;
Какое значение толстой кишки перед "8" и "8"?
Это бит. Он действителен только в определении struct
, и это означает, что система будет использовать только 8 бит для вашего целого.
Это битполе, неясная и ошибочная черта структур. Этого должно быть достаточно для поиска информации, которую вам нужно знать, чтобы иметь дело с битовыми полями в коде других людей. Что касается вашего собственного кода, никогда не используйте битовые поля.
Изменить: В соответствии с требованиями Zack битовые поля имеют существенные недостатки по сравнению с выполнением собственной битовой арифметики и отсутствие преимуществ. Вот некоторые из них:
Для однобитовых флагов использование вашей собственной битовой арифметики вместо битовых полей является полным без проблем. Для больших значений вам нужно упаковать, если слишком сложно выписать всю битовую арифметику повсюду, напишите несколько простых макросов.
Это спецификация bitfield.
Это означает, что _exponent
принимает только 8
биты из signed int
, которые обычно принимают больше, чем 8
бит. Как правило, бит-поля используются с неподписанными типами.
IIRC, компилятор будет предупреждать, если что-то, что не вписывается в 8-бит, записывается в _exponent
.
Если этот оператор находится внутри структуры, значит битовые поля.