因为CPU的差异,各系统中的数据类型所占的字节数(bytes)不同,二进制位数(bit)也不同。那么怎样才能知道自己系统的数据类型的字节数,位数呢?

授之以鱼不如授之以渔,大家可以自己从电脑里获取这些信息。

首先我们知道1个字节等于8个位,可以用sizeof()关键字设计以下程序解决:

/*获取当前操作系统的字节数(bytes)和位数(bit)*/

#include<stdio.h>
int main()
{
    printf("int:bytes %d;bit %d", sizeof(int), sizeof(int) * 8);
    return 0;
}

由此

可得知此系统的整数(int)所占字节数是4,位数为32

而取值范围则可以用极限值符号(极限值符号定义在 limits.h 头文件中,以下会详细介绍)来获得
下面以char类型为例:

/*获取char数据类型的取值范围*/
#include<stdio.h>
#include<limits.h>
int main()
{
    printf("char:MIN %d;MAX %d", CHAR_MIN, CHAR_MAX);

    return 0;
}


有符号整数类型

类型名称    字节数    取值范围
signed char    1    -2^7 ~ 2^7-1
short int 或 short    2    -2^15 ~ 2^15-1
int    4    -2^31 ~ 2^31-1
long int 或 long    4    -2^31 ~ 2^31-1
long long int 或 long long    8    -2^63 ~ 2^63-1
无符号整数类型

类型名称    字节数    取值范围
unsigned char    1    0 ~ 2^8
unsigned short int 或 unsigned short    2    0 ~ 2^16
unsigned int    4    0 ~ 2^32
unsigned long int 或 unsigned long    4    0 ~ 2^32
unsigned long long int 或 unsigned long long    8    0 ~ 2^64
浮点类型

类型名称    字节数    取值范围
float    4    -/+3.4e38(精确到6位小数)
double    8    -/+1.7e308(精确到15位小数)
long double    12    -/+1.19e4932(精确到18位小数)
极限值符号

表示有符号整数类型的极限值符号

类型名称    下限    上限
char    CHAR_MIN    CHAR_MAX
short    SHRT_MIN    SHRT_MAX
int    INT_MIN    INT_MAX
long    LONG_MIN    LONG_MAX
long long    LLONG_MIN    LLONG_MAX
表示无符号整数类型的极限值符号

类型名称    下限    上限
unsigned char    0    UCHAR_MAX
unsigned short    0    USHRT_MAX
unsigned int    0    UINT_MAX
unsigned long    0    ULONG_MAX
unsigned long long    0    ULLONG_MAX
表示浮点类型的极限值符号

类型名称    下限    上限
float    FLT_MIN    FLT_MAX
double    DBL_MIN    DBL_MAX
long double    LDBL_MIN    LDBL_MAX……