首页 > 代码库 > c++类型所占的字节和表示范围

c++类型所占的字节和表示范围

一:数值类型的大杂烩

(1)short、int 和 long 类型都表示整型值。存储空间的大小不同

一般, short 类型为半个机器字长,int 类型为一个机器字长,而 long 类型为一个或两个机

器字长(在 32 位机器中 int 类型和 long 类型通常字长是同样的)。

(2)常量的定义以及表示范围:

unsigned   int   0~4294967295                                                  就是2^32-1
int   -2147483648~2147483647                                                就是2^(-31) ~ 2^31-1
unsigned long 0~4294967295                                                   就是2^32-1
long   -2147483648~2147483647                                             就是2^(-31) ~ 2^31-1
long long的最大值:9223372036854775807                          就是2^63-1
long long的最小值:-9223372036854775808                         就是2^(-63)
unsigned long long的最大值:18446744073709551615      就是2^64-1
__int64的最大值:9223372036854775807                              就是2^63-1
__int64的最小值:-9223372036854775808                             就是2^(-63)

unsigned __int64的最大值:18446744073709551615           就是2^64-1

(3)c 和 c++的类型所占的字节数

32位编译器

char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器) int * 也是 4字节

short int : 2个字节
int:  4个字节
unsigned int : 4个字节
float:  4个字节

double:   8个字节
long:   4个字节
long long:  8个字节
unsigned long:  4个字节

64位编译器

char :1个字节
char*(即指针变量): 8个字节  int * 也是 8字节

short int : 2个字节
int:  4个字节
unsigned int : 4个字节
float:  4个字节

double:   8个字节
long:   8个字节(32位和64位变得就是long,其它的均没有变化啊)
long long:  8个字节
unsigned long:  8个字节 

二:常值常数类型的  -----  u / U  和 l/L 以及ul/UL的几点说明

(1)使用条件

1.  数值常数有:整型常数、浮点常数;
2.  仅仅有数值常数才有后缀说明;
3.  数值常数后缀不区分字母大写和小写。
(2)整型常数的表示形式有:

十进制形式、以0开头的八进制形式、以0x开头的十六进制形式,无二进制形式。整型常数默认是signed int的。
对整型常数进行类型转换的后缀仅仅有:u或U(unsigned)、l或L(long)、u/U与l/L的组合(如:ul、lu、Lu等)。例:100u; -123u; 0x123l;
(3)浮点常数的表示形式有:

科学计数形式和小数点形式。浮点常数默认是double的。


对浮点常数进行类型转换的后缀仅仅有:f或F(单精度浮点数)、l或L(长双精度浮点数)。

(注:因浮点型常数总是有符号的,故没有u或U后 缀)。例:1.23e5f; 1.23l; -123.45f;
(4)整型常量的类型是下列对应表中第一个能表示其值的类型:
无后缀的十进制整数常量:int,long int,long long int
以字母u或U为后缀的十进制整型常量:unsigned int,unsigned long int,unsigned long long int
以字母l或L为后缀的十进制整型常量:long int,long long int
同一时候以字母u或U和字母l或L为后缀的十进制整型常量:unsigned long int。unsigned long long int
以字母ll或LL为后缀的十进制整型常量:long long int
同一时候以字母u或U和字母ll或LL为后缀的十进制整型常量:unsigned long long int

无后缀的八进制或十六进制常量:int。unsigned int,long int,unsigned long int,long long int,unsigned long long int
以字母u或U为后缀的八进制或十六进制常量:unsigned int,unsigned long int,unsigned long long int
以字母l或L为后缀的八进制或十六进制常量:long int。unsigned long int。long long int,unsigned long long int
同一时候以字母u或U和字母l或L为后缀的八进制或十六进制常量:unsigned long int,unsigned long long int
以字母ll或LL为后缀的八进制或十六进制常量:long long int。unsigned long long int
同一时候以字母u或U和字母ll或LL为后缀的八进制或十六进制常量:unsigned long long int


c++类型所占的字节和表示范围