For purposes of conversion, the C language ranks data types in the order shown in Figure 5.1.
The ranking illustrated in Figure 5.1 generally reflects the amount of storage that each type requires. As you may remember from Chapter 4, “Data Types,” larger data types require more storage than smaller types. Thus, an int, which requires two bytes of storage, outranks a char, which requires one byte.
Within this ranking, an unsigned type outranks the corresponding signed type. An unsigned char value is of higher rank than a signed char, and so forth.