When the Treat Enums As Ints option is set, the compiler always allocates a whole word (a four-byte int for 32-bit programs) for enumeration types (variables of type enum).
When this option is off (-b-), the compiler allocates the smallest integer that can hold the enumeration values: the compiler allocates an unsigned or signed char if the values of the enumeration are within the range of 0 to 255 (minimum) or -128 to 127 (maximum), or an unsigned or signed short if the values of the enumeration are within the following ranges:
0 to 4,294,967,295 or -2,147,483,648 to 2,147,483,647
The compiler allocates a four-byte int (32-bit) to represent the enumeration values if any value is out of range.