
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) ^ a b Uppercase differs from lowercase in the output.^ These format strings also exist for formatting to text, but operate on a double.( SCHAR_MIN = −128 and SCHAR_MAX = 127) for an 8-bit signed char. However, most platforms use two's complement, implying a range of the form −2 m−1 to 2 m−1−1 with m ≥ n for these implementations, e.g. ) come from the various integer representations allowed by the standard ( ones' complement, sign-magnitude, two's complement).


The C language provides the four basic arithmetic type specifiers char, int, float and double, and the modifiers signed, unsigned, short, and long.
