Bit-fields can be used to allow flags or other integer values with small ranges to be packed together to save storage space.
It is implementation-defined whether the specifier int designates the same type as signed int or the same type as unsigned int for bit-fields. C99 integer promotions also requires that "If an int can represent all values of the original type, the value is converted to an int; otherwise, it is converted to an unsigned int."
...