C++提供了丰富的内置数据类型,用户也可以自定义数据类型,下面是5种基本数据类型:
- 布尔型:bool
- 字符型:char
- 整型:int
- 浮点型:float
- 双浮点型:double
基本数据类型还可以使用下面的类型修饰符进行修饰:
- 有符号:signed
- 无符号:unsigned
- 短整型:short
- 长整型:long
数据类型 | 范围 |
---|
char | [?128,127] 或 [0,255][0,255],在系统字节不是 8 位的情况下可以达到更大的数据范围 | unsigned char | [0,255],在系统字节不是 8 位的情况下可以达到更大的数据范围 | signed char | [?128,127],在系统字节不是 8 位的情况下可以达到更大的数据范围 | int/long (int) | 通常情况下为 [-2147483648,2147483647](或者说[?2 *31,2 *31?1]),但 int 只保证 [-32768,32767](或者说 [?2 *15,2 *15?1]) | unsigned int | [0,4294967295],(或者说 [0,2 *32?1]) | signed int | 同 int | short int | 至少 [-32768,32767](或者说[?2 *15,2 *15?1]),但可以达到更大的数据范围 | unsigned short int | [0,65535](或者说[0,2 *16?1]) | signed short int | 同 short int | long long (int) | 通常情况下为 [-9223372036854775808,9223372036854775807][?9223372036854775808,9223372036854775807],(或者说 [-2*{63},2*{63}-1]),但在 C++11 开始才保证至少是这个数据范围 | signed long long (int) | 同 long long (int) | unsigned long long (int) | [0,18446744073709551615] | float | [1.17×10 ?38,3.40×1038](约数,来源于 IEEE-754 标准) | double | [2.23×10 ?308 ,1.80×10 308](约数,来源于 IEEE-754 标准) | long double | [3.36×10* ?4932,1.19×10 *4932](约数,一说和 double 范围相等) |
signed char 1 -128~+127// 这个应该是ASC码的范围 short int 2 -32768~+32767 int 4 -2147483648~+2147483647 //大约10的9次方 long int 4 -2147483648~+2141483647 long long long int 8 -9223372036854775808~+9223372036854775807
int 是基本的整数类型,默认是有符号的(signed ),unsigned 表示无符号,无符号值可以避免误存负数, 同时扩大了正数的表示范围。
short 和 long 是在 int 的基础上进行的扩展,使用 short int 可以节省内存,long int 则可以表示更大的值。
从上面 可以发现 int 类型 和 long 类型 所占用字节数是一样的,
这是由操作系统决定的,参照下图:
|