“Whether a “plain” int bit-field
is treated as a signed int bit-field or as an unsigned
int bit-field (C90 6.5.2, C90 6.5.2.1, C99 6.7.2, C99
6.7.2.1).” |
|
A plain int bit-field is treated as an unsigned integer.
Signed integer bit-fields are not supported. |
“Allowable bit-field types other than
_Bool , signed int , and unsigned
int (C99 6.7.2.1).” |
|
The signed and unsigned char type is
allowed. |
“Whether a bit-field can straddle a storage unit
boundary (C90 6.5.2.1, C99 6.7.2.1).” |
|
A bit-field cannot straddle a storage unit. Any bit-field that would
straddle a storage unit will be moved to the LSb position in a new storage
unit. |
“The order of allocation of bit-fields within a
unit (C90 6.5.2.1, C99 6.7.2.1).” |
|
The first bit-field defined in a structure is allocated the LSb position in
the storage unit. Subsequent bit-fields are allocated higher-order
bits. |
“The alignment of non-bit-field members of
structures (C90 6.5.2.1, C99 6.7.2.1).” |
|
No alignment is performed. |
“The integer type compatible with each enumerated
type (C90 6.5.2.2, C99 6.7.2.2).” |
|
The type chosen to represent an enumerated type depends on the enumerated
values. A signed type is chosen if any value is negative; unsigned otherwise.
If a char type is sufficient to hold the range of values, then
this type is chosen; otherwise, an int type is chosen.
Enumerated values must fit within an int type and will be
truncated if this is not the case. |