#include <stdio.h> 
#include <limits.h>

int main(void)
{
puts("该环境下各字符型、整型数值的范围");
printf("char: :%d~%d\n", CHAR_MIN, CHAR_MAX);
printf("signed char :%d~%d\n", SCHAR_MIN, SCHAR_MAX);
printf("unsignd char :%d~%d\n", 0, UCHAR_MAX);

printf("short :%d~%d\n", SHRT_MIN, SHRT_MAX);
printf("int :%d~%d\n", INT_MIN, INT_MAX);
printf("long :%ld~%ld\n", LONG_MIN, LONG_MAX);

printf("unsigned short :%u~%u\n", 0, USHRT_MAX);
printf("usigned :%u~%u\n", 0, UINT_MAX);
printf("unsigned long :%lu~%lu\n", 0, ULONG_MAX);

return 0;
}

运行结果:

数据类型

最小值

最大值

char

-128

127

signed char

-128

127

unsignd char

0

255

short

-32768

32767

int

-2147483648

2147483647

long

-2147483648

2147483647

unsigned short

0

65535

usigned

0

4294967295

unsigned long

0

4294967295

声明变量时,可以通过加上 类型说明符 signedunsigned 来指定其中一种数据类型。若不加类型说明符,则默认为有符号。

无符号整型 (unsigned integer type) 表示 0 和整数的整型
有符号整型 (signed integer type) 表示 0 和正负数的整型

字符型

整型

有符号整型

无符号整型

signed char

signed short int

signed char

unsigned char

char

signed int

signed short int

unsigned short int

unsigned char

signed long int

signed int

unsigned int

unsigned short int

signed long int

unsigned long int

unsigned int

unsigned long int

signed short

signed int

short

unsigned short

signed

int

unsigned

signed long

long int

long

unsigned long

注:char 型比较特殊,存在既不带 signed 又不带 unsigned 的 “单独”的char型。
对于单独的 shortlong, 可以认为是省略了 int
对于单独的 signedunsigned,可以认为是(非 shortlong 的)int