signed char: -2^07+1 to +2^07-1
short:       -2^15+1 to +2^15-1
int:         -2^15+1 to +2^15-1
long:        -2^31+1 to +2^31-1
long long:   -2^63+1 to +2^63-1
int
long
sizeof(char)<=sizeof(short)<=sizeof(long)
short
char
long
uint16_t
uint32_t
short
int
long
short
int
limits.h
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>


int main(int argc, char** argv) {

    printf(\"CHAR_BIT    :   %d\\n\", CHAR_BIT);
    printf(\"CHAR_MAX    :   %d\\n\", CHAR_MAX);
    printf(\"CHAR_MIN    :   %d\\n\", CHAR_MIN);
    printf(\"INT_MAX     :   %d\\n\", INT_MAX);
    printf(\"INT_MIN     :   %d\\n\", INT_MIN);
    printf(\"LONG_MAX    :   %ld\\n\", (long) LONG_MAX);
    printf(\"LONG_MIN    :   %ld\\n\", (long) LONG_MIN);
    printf(\"SCHAR_MAX   :   %d\\n\", SCHAR_MAX);
    printf(\"SCHAR_MIN   :   %d\\n\", SCHAR_MIN);
    printf(\"SHRT_MAX    :   %d\\n\", SHRT_MAX);
    printf(\"SHRT_MIN    :   %d\\n\", SHRT_MIN);
    printf(\"UCHAR_MAX   :   %d\\n\", UCHAR_MAX);
    printf(\"UINT_MAX    :   %u\\n\", (unsigned int) UINT_MAX);
    printf(\"ULONG_MAX   :   %lu\\n\", (unsigned long) ULONG_MAX);
    printf(\"USHRT_MAX   :   %d\\n\", (unsigned short) USHRT_MAX);
    printf(\"FLT_MAX     :   %g\\n\", (float) FLT_MAX);
    printf(\"FLT_MIN     :   %g\\n\", (float) FLT_MIN);
    printf(\"-FLT_MAX    :   %g\\n\", (float) -FLT_MAX);
    printf(\"-FLT_MIN    :   %g\\n\", (float) -FLT_MIN);
    printf(\"DBL_MAX     :   %g\\n\", (double) DBL_MAX);
    printf(\"DBL_MIN     :   %g\\n\", (double) DBL_MIN);
    printf(\"-DBL_MAX     :  %g\\n\", (double) -DBL_MAX);

    return (EXIT_SUCCESS);
}
0 → +18446744073709551615

        实际上,大多数现代处理器(ARM,Intel / AMD,Alpha,SPARC,Itanium和PowerPC)上的unsigned int范围为0到2 ^ 32-1,即4,294,967,295 = 0xffffffff 因为int(有符号和无符号)的长度为32位,最大的长度如前所述。 (无符号short的最大值为2 ^ 16-1 = 65,535) (unsigned)long long int将具有64位的长度(在大多数情况下,long int就足够了 64位Linux等,但该标准承诺将long long int设置为64位)。 因此,它们的范围为0到2 ^ 64-1 = 18446744073709551615     
2020-05-27
signed char: -2^07 to +2^07-1
short:       -2^15 to +2^15-1
int:         -2^15 to +2^15-1
long:        -2^31 to +2^31-1
long long:   -2^63 to +2^63-1
signed char: -2^07 to +2^07-1
short:       -2^15 to +2^15-1
int:         -2^31 to +2^31-1
long:        -2^31 to +2^31-1
long long:   -2^63 to +2^63-1

        看一下limits.h。您可以找到编译器的特定值。 INT_MIN和INT_MAX将很有趣。     
2020-05-27
limits.h
man limits.h

        一个32位无符号int的范围是0到4,294,967,295。 0到65535将是16位无符号。 无符号long long(在64位实现中,也可能是ulong和uint)的范围(至少)为0到18,446,744,073,709,551,615(264-1)。从理论上讲,它可能会更大,但至少到目前为止,这种情况不存在。     
2020-05-27
stdlib.h