C++中定义了一套包括算术类型(arithmetic)和空类型(void)在内的基本数据类型。其中算术类型包了字符,整型数,布尔值和浮点数。空类型不对应具体的值,仅用于一些特殊的场合。
1.1 算术类型:整形+浮点型
| wchar_t | 宽字符 | 16位 |
| char16_t | unicode字符 | 16位 |
| char32_t | unicode字符 | 32位 |
| int | 整形 | 16位 |
| long | 长整型 | 32位 |
| long long | 长整型 | 64位 |
| float | 单精度浮点数 | 6位 |
| double | 双精度 | 10位 |
| long double | 扩展精度浮点 | 10位 |
布尔类型:是true or false
注意:long long 类型是在C++中新定义的。
内置类型的机器实现:计算机以比特序列存储数据,每个比特非0即1。
大多数计算机以2的整数次幂个比特来作为快来处理内存,可寻址的最小内存块称为(字节),存储的基本单元称为字(word)它通常是由几个字节组成。在C++语言中,一个字节要至少能容纳机器基本字符集中的字符。大多数机器的字节由8比特构成,字则由32或64比特构成,也就是4或8字节。
大多数计算机将内存中的每个字节与一个数字(地址)关联起来,一个字节为8比特。字为32比特的机器上,我们可以看到一个自的内存区域如下:
| 736424 | 00111011 |
| 736425 | 00011011 |
左侧是字节的地址,右侧是字节中8比特的具体内容。
带符号类型和无符号类型
带符号类型可以表示正数,负数,或0,无符号类型仅能表示大于等于0的值。
类型int,long,short,long long 都是带符号的,通常在这些类型名前添加unsigned就可以得到无符号类型。
1.2 类型转换
将对象从一种给定的类型转换为另一种相关的类型。
注意:当从无符号数中减去一个值时,不管这个值是不是无符号数,我们必须确保结果不能是一个负值。
转义序列:
转义序列均以反斜线作为开始,C++规定的转义序列包括:
| 换行符\n | 横向制表符\t | 响铃符\a |
| 纵向制表符\v | 退格符\b | 双引号\" |
| 反斜线\\ | 问好\? | 单引号\' |
| 回车符\r | 进纸符\f |
在程序中,上述转义字符被当作一个字符使用。