The minimum range requirements defined in standard are (3.9.1 - Fundamental Types):
Objects declared as characters (char) shall be large enough to store any member of the implementation’s basic
character set.
and
There are five standard signed integer types : “signed char”, “short int”, “int”, “long int”, and “long
long int”. In this list, each type provides at least as much storage as those preceding it in the list.
There may also be implementation-defined extended signed integer types. The standard and extended signed
integer types are collectively called signed integer types. Plain ints have the natural size suggested by the
architecture of the execution environment44; the other signed integer types are provided to meet special
needs.
Footnote 44 on this page says:
44) that is, large enough to contain any value in the range of INT_MIN and INT_MAX, as defined in the header <climits>
.
And C standard in 5.2.4.2.1 says:
// minimum value for an object of type int
INT_MIN -32767 // −(215 − 1)
// — maximum value for an object of type int
INT_MAX +32767 // 215 − 1