- 论坛徽章:
- 0
|
怎样测试自已电脑上字符(char)的范围有多大
原帖由 "ccf" 发表:
maxUchar = pow(2, (8*sizeof(char))) - 1;
这个只能说明char的范围是255,并不能确定他就是从0至255,还是-127至127吧,,,因为我试了一下用sizeof(signed char),结果也是255啊
不好意思未考虑到这一点。
各种数据类型的范围是与编译器有关,不是与电脑有关,要用什么编译器,最简单的方法是查看其include文件夹中limits.h头文件中对各种数据类型的宏定义即可。
如TC2.0中:
#define CHAR_BIT 8
#if (((int)((char)0x80)) < 0)
#define CHAR_MAX 0x7F
#define CHAR_MIN 0x80
#else
#define CHAR_MAX 0xFFU
#define CHAR_MIN 0x00
#endif
#define SCHAR_MAX 0x7F
#define SCHAR_MIN -128
#define UCHAR_MAX 0xFFU
#define SHRT_MAX 0x7FFF
#define SHRT_MIN ((int)0x8000)
#define USHRT_MAX 0xFFFFU
#define INT_MAX 0x7FFF
#define INT_MIN ((int)0x8000)
#define UINT_MAX 0xFFFFU
#define LONG_MAX 0x7FFFFFFFL
#define LONG_MIN ((long)0x80000000L)
#define ULONG_MAX 0xFFFFFFFFU
至于浮点型则要看float.h了
TC2.0中
#define FLT_RADIX 2
#define FLT_ROUNDS 1
#define FLT_GUARD 1
#define FLT_NORMALIZE 1
#define DBL_DIG 15
#define FLT_DIG 6
#define LDBL_DIG 19
#define DBL_MANT_DIG 53
#define FLT_MANT_DIG 24
#define LDBL_MANT_DIG 64
#define DBL_EPSILON 2.2204460492503131E-16
#define FLT_EPSILON 1.19209290E-07F
#define LDBL_EPSILON 1.084202172485504E-19
/* smallest positive IEEE normal numbers */
#define DBL_MIN 2.2250738585072014E-308
#define FLT_MIN 1.17549435E-38F
#define LDBL_MIN _tiny_ldble
#define DBL_MAX _huge_dble
#define FLT_MAX _huge_flt
#define LDBL_MAX _huge_ldble
#define DBL_MAX_EXP +1024
#define FLT_MAX_EXP +128
#define LDBL_MAX_EXP +16384
#define DBL_MAX_10_EXP +308
#define FLT_MAX_10_EXP +38
#define LDBL_MAX_10_EXP +4932
#define DBL_MIN_10_EXP -307
#define FLT_MIN_10_EXP -37
#define LDBL_MIN_10_EXP -4931
#define DBL_MIN_EXP -1021
#define FLT_MIN_EXP -125
#define LDBL_MIN_EXP -16381 |
|