1. 内置类型:c++的内置类型包含算术类型和空类型两种,而算术类型又包含字符、整形、布尔形和浮点数。C++并没有规定算术类型实际所占用的比特数,与C不同,存在char,wchar_t,char16_t,char32_t四种字符类型,char的空间确保可以存放机器基本字符集,而wchar_t则确保可以存放机器最大扩展字符集(这些字符集相关的概念尚不清楚),其余两者则用于unicode字符集有关。其余则是熟悉的bool,int,long,long long(c++11新增的),float,double,long double。
2.机器存储:可寻址的最小单元是字节,而存储的单位是字,一个字的大小通常是4/8字节。
3.符号:一般的算数类型都分为有符号和无符号类型,其中char则有三种,实际的char是什么取决于编译器实现。
4.使用:double一般是最快的,char不要用于计算。
5.类型转换:非布尔->布尔(0->false,其他->true),布尔->非布尔(false->0,true->1)。浮点->整形(截取小数部分),整数->浮点(小数部分取零)。
给无符号数一个超出范围的值,结果则是对表示类型总数取模后的余数,给有符号数一个超出范围的值,结果未定义。
算数类型自动转换的行为其实有可能带来代码逻辑出错(==写成=)。
当一个算术表达式同时存在有符号和无符号数时,会出现有符号数自动被转化为无符号数的现象。
6.字面值常量:字面值常量分为整形和浮点型,其中整形可以写成十进制、八进制(0开头)或者十六进制数(0x开头)。这三者有所不同,只有十进制是确定为带符号数(由符号和无符号数组成),其余两者则根据值范围不同是对应最小能表示的值。
浮点数存在小数和科学计数法表示的指数。
其余则是char字面值和字符串字面值(字符数组+空字符)。字符串字面值可以换行分开书写。
可以通过前缀和后缀来改变字面值的默认类型:
前缀:L宽字符值字面值,uUnicode16字符字面值,UUnicode32字符字面值,u8UTF-8字符串字面值,
后缀:u/U无符号,l/LLong,ll/LLLongLong,f/FFloat,lLLongFloat。
7.转义序列:转义序列是特殊的字符,这些字符或是因为在语言中有特殊含义,或是因为不可打印,需要通过转义才能使用。还有一种泛化的转义序列,这种转义序列的形式是\x后跟1~多位的十六进制数字,或是\后跟1~3个八进制数字