C++ 定义了一套包括 算术类型(arithmetic type) 和 空类型(void)
2.1.1 算术类型
算术类型分为两类: 整形(包括字符和布尔) 和浮点型
类型 | 含义 | 最小尺寸 |
bool | 布尔类型 | 未定义 |
char | 字符 | 8位 |
wchar_t | 宽字符 | 16位 |
char16_t | Unicode字符 | 16位 |
char32_t | unicode字符 | 32位 |
short | 短整型 | 16位 |
int | 整形 | 16位 |
long | 长整型 | 32位 |
long long | 长整型 | 64位 |
float | 单精度浮点数 | 6位有效数字 |
double | 双精度浮点数 | 10位有效数字 |
long double | 扩展精度浮点数 | 10位有效数字 |
基本的字符类型是 char , 一个char的大小和一个机器字节一样
带符号类型和无符号类型
除去布尔型和扩展的字符型,其他整型可以划分为 带符号的(signed)和 无符号的(unsigned)
带符号可以表示正数,负数,0
无符号的仅表示正数
字符类型分为3种
char,signed char, unsigned char
char和signed char不一样 取决于编译器
2.1.2 类型转换
把一种算术类型赋值给另一种类型
1.非布尔类型 赋给 布尔类型, 初始值为0为flase,否则为true
2.布尔值 赋给 非布尔, 初始值为flase结果为0, 初始值为true 结果为1
3.浮点数 赋给 整数 ,保留小数点前的部分
4.整数 赋给 浮点 ,小数部分记为0。如果整数所占的空间容量超过了浮点的容量 , 精度可能损失
5.赋给 无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数
(如8bit的unsigned char 可表示0-255区间的值,-1就是 -1%256)
6.赋给带符号类型一个超出它表示范围的值是,结果未定义(undefined)
程序自动转换
含有无符号类型的表达式
表达式里有带符号类型和无符号类型,带符号类型为负时会出现异常
2.1.3字面值常量
整数和浮点型字面值
可把整型字面值写作十进制,八进制(0开头),十六进制(0x)开头
字符和字符串字面值
‘A’表示 A
“A”包含A和一个空格
转义序列
略 (百度)
指定字面值类型
前后缀 (百度)
布尔字面值和指针字面值
Ture 和 false 就是布尔的字面值
nullptr是指针的字面值