基本数据类型:算术类型和空类型
算术类型包括整型和浮点型
| 类型 | 含义 | 最小尺寸 |
|---|---|---|
| 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位有效数字 |
care:
bool值为true/false
int、short、long、long?long都是带符号的,只要在前面加上unsigned就可以得到无符号类型。
字符型则分为三类:char、signed?char、unsigned?char。char≠signed?char,char是否带字符由系统决定。
当程序使用一种类型而其实对象应该是另外一种类型时,程序回自动进行类型转换。
????
care:
将一个非布尔类型的算术值赋值给布尔类型时,若为0便转化为false,否则都为true。
将一个布尔类型值赋值给非布尔类型时,若为false则转化为0,若为true则转换为1。
将一个算术值赋值给无符号类型,且超过其的范围,结果将会是算术值对无符号类型数值总数取模后的余数。
以O开头的整数代表八进制数,以Ox/OX开头的整数代表十六进制。
以小数/以科学计数法表示的指数,其中指数部分用E/e标识
eg:3.14159???3.14159E0???0.???0e0????.001
用但应好扣起来的称为char型字面值,双引号括起来的零个/多个字符构成字符串型字面值。
care:字符串字面值的类型其实是常量字符构成的数组,编辑器会在每个字符串的结尾处添加一个空字符(‘\0‘),所以字符串字面值的实际长度要+1。
不可打印的字符和在C++中有特殊含义的字符
若要使用这些字符则需要用到转义序列,以反斜线为开始(\)
care:需要注意的是转移序列在程序中是被当作字符来使用的
| 换行符 | \n | 横向制表符 | \t | 抱紧(响铃)符 | \a |
|---|---|---|---|---|---|
| 纵向制表符 | ?\v |
退格符 | \b |
双引号 | \" |
| 反斜线 | \\ |
问号 | \? |
单引号 | \‘ |
| 回车符 | \r |
进纸符 | ?\f |
通过添加前缀/后缀,改变整型、浮点型的字符字面值的默认类型
| 前缀 | 含义 | 类型 |
|---|---|---|
| u | Unicode | 16字符 |
| U | Unicode | 32字符 |
| L | 宽字符 | wchar_t |
| u8 | UTF-8 | char |
| 后缀 | 最小匹配类型 |
|---|---|
| u/U | unsigned |
| l/L | long |
| ll/LL | long?long |
| 后缀 | 类型 |
|---|---|
| f/F | float |
| l/L | long?double |
《C++ primer》原文:https://www.cnblogs.com/halfsugar-ss/p/13510213.html