貌似有些编译器并不完全支持所有数据类型,运行结果可能也有差异,依编译器而异,但是获得方式都是一样的
#include <stdio.h> #include <limits.h> #include < float.h> #include <stdlib.h> int main( void) { printf( " char类型的变量存储值从%d到%d\n ", CHAR_MIN, CHAR_MAX); printf( " unsigned char类型的变量存储值从0到%u\n ", UCHAR_MAX); printf( " short类型的变量存储值从%d到%d\n ", SHRT_MIN, SHRT_MAX); printf( " unsigned short类型的变量存储值从0到%u\n ", USHRT_MAX); printf( " int类型的变量存储值从%d到%d\n ", INT_MIN, INT_MAX); printf( " unsigned int类型的变量存储值从0到%u\n ", UINT_MAX); printf( " long类型的变量存储值从%ld到%ld\n ", LONG_MIN, LONG_MAX); printf( " unsigned long类型的变量存储值从0到%lu\n\n ", ULONG_MAX); printf( " long long类型的变量存储值从%lld到%lld\n ", LLONG_MIN, LLONG_MAX); printf( " unsigned long long类型的变量存储值从0到%llu\n ", ULLONG_MAX); printf( " 最小的非零float类型变量的值的是%.3e\n ", FLT_MIN); printf( " 最大的float类型变量的值的是%.3e\n ", FLT_MAX); printf( " 最小的非零double类型变量的值的是%.3e\n ", DBL_MIN); printf( " 最大的double类型变量的值的是%.3e\n\n ", DBL_MAX); printf( " 最小的非零long double类型变量的值的是%.3Le\n ", LDBL_MIN); printf( " 最大的long double类型变量的值的是%.3Le\n ", LDBL_MAX); printf( " float类型的变量提供%u位精度的小数位数\n ", FLT_DIG); printf( " double类型的变量提供%u位精度的小数位数\n\n ", DBL_DIG); printf( " long double类型的变量提供%u位精度的小数位数\n ", LDBL_DIG); system( " pause "); return 0;
} 运行结果如下:
char类型的变量存储值从-128到127
unsigned char类型的变量存储值从0到255
short类型的变量存储值从-32768到32767 unsigned short类型的变量存储值从0到65535 int类型的变量存储值从-2147483648到2147483647 unsigned int类型的变量存储值从0到4294967295 long类型的变量存储值从-2147483648到2147483647 unsigned long类型的变量存储值从0到4294967295 long long类型的变量存储值从-9223372036854775808到9223372036854775807 unsigned long long类型的变量存储值从0到18446744073709551615 最小的非零float类型变量的值的是1.175e- 038 最大的float类型变量的值的是3.403e+ 038 最小的非零double类型变量的值的是2.225e- 308 最大的double类型变量的值的是1.798e+ 308 最小的非零long double类型变量的值的是- 0.000e+000 最大的long double类型变量的值的是- 1.#QOe+ 000 float类型的变量提供6位精度的小数位数 double类型的变量提供15位精度的小数位数 long double类型的变量提供18位精度的小数位数