However, several different integer width schemes (data models) are popular. This allows great flexibility: for example, all types can be 64-bit. The type int should be the integer type that the target processor is most efficiently working with. The minimum size for char is 8 bits, the minimum size for short and int is 16 bits, for long it is 32 bits and long long must contain at least 64 bits. As char's size is always the minimum supported data type, no other data types (except bit-fields) can be smaller. The relation requirements are that the long long is not smaller than long, which is not smaller than int, which is not smaller than short. The standard requires only size relations between the data types and minimum sizes for each data type: The actual size of the integer types varies by implementation. Uppercase specifiers produce values in the uppercase, and lowercase in lower (%A, %E, %F, %G produce such values as INF, NAN and E (exponent) in uppercase)
Of the same size as char, but guaranteed to be signed. Actual type can be either signed or unsigned. Smallest addressable unit of the machine that can contain basic character set. The following table lists the permissible combinations in specifying a large set of storage size-specific declarations. The C language provides the four basic arithmetic type specifiers char, int, float and double, and the modifiers signed, unsigned, short, and long.