1. 算数类型
类型 | 位 | 范围 |
---|---|---|
char | 1 个字节 | -128 到 127 或者 0 到 255 |
col 2 is | centered | $12 |
unsigned char | 1 个字节 | 0 到 255 |
signed char | 1 个字节 | -128 到 127 |
int | 4 个字节 | -2147483648 到 2147483647 |
unsigned int | 4 个字节 | 0 到 4294967295 |
signed int | 4 个字节 | -2147483648 到 2147483647 |
short int | 2 个字节 | -32768 到 32767 |
unsigned short int | 2 个字节 | 0 到 65,535 |
signed short int | 2 个字节 | -32768 到 32767 |
long int | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
signed long int | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
unsigned long int | 8 个字节 | 0 to 18,446,744,073,709,551,615 |
float | 4 个字节 | +/- 3.4e +/- 38 (~7 个数字) |
double | 8 个字节 | +/- 1.7e +/- 308 (~15 个数字) |
long double | 8 个字节 | +/- 1.7e +/- 308 (~15 个数字) |
wchar_t | 2 或 4 个字节 | 1 个宽字符 |
2.字符串的前后缀:
前缀 | 意义 |
---|---|
u | unicode16字符 |
U | unicode32字符 |
L | 宽字符 |
u8 | utf-8 |
后缀 | 意义 |
---|---|
u或U | 表示该字面值为无符号类型 |
l或L | 表示该字面值的类型至少为long |
ll或LL | 表示该字面值的类型至少为long long |
f或F | 表示该字面值为float类型 |
前后缀可以交叉结合使用:后缀UL时,表示无符号长整型。
字符用单引号‘’,字符串用双引号“”。
十进制:20 八进制:020 十六进制:0x20或者0X20
3.类型转换
当我们把一个非布尔类型的算术值赋给布尔类型时,初始值为0则结果为false,否则结果为true。
当我们把一个布尔值赋给非布尔类型时,初始值为false则结果为0,初始值为true则结果为1。
当我们把一个浮点数赋给整数类型时,进行了近似处理。结果值将仅保留浮点数中小数点之前的部分。
当我们把一个整数值赋给浮点类型时,小数部分记为0。如果该整数所占的空间超过了浮点类型的容量,精度可能有损失。
当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。例如,8比特大小的unsigned char可以表示0至255区间内的值,如果我们赋了一个区间以外的值,则实际的结果是该值对256取模后所得的余数。因此,把-1赋给8比特大小的unsigned char所得的结果是255。
当我们赋给带符号类型一个超出它表示范围的值时,结果是未定义的(undefined)。此时,程序可能继续工作、可能崩溃,也可能生成垃圾数据。
4.变量
4.1 命名规则:字母+数字+下划线(必须以字母或者下划线开头)
4.2 局部变量会覆盖同名的全局变量
4.3 声明:规定变量的类型和名字(在变量名前添加extern可声明变量,如果显式初始化即为定义)
4.5 定义:负责创建与名字关联的实体,并申请存储空间和赋初始值
4.4 引用:它只是为存在的对象所起的另外一个名字。它不是一个对象,没有实际的地址,定义是必须初始化
4.5 指针:本身就是一个对象,允许指针之间的拷贝和赋值
4.6 const表示的不可改变的量,该变量必须初始化(可以在运行时初始化)
4.7 顶层/底层const:顶层const表示本身是常量(常量指针,声明时const必须放在指针符号*后面,即:*const ),底层const表示所指的对象是常量(指向常量的指针,如:int const *p_a = &num_a);执行拷贝操作时,拷入拷出对象必须具有相同的底层const资格,或能够强制转换
4.8 常量表达式:数据类型和初始值都需要是常量类型,值不会改变并在编译过程就能得到计算结果
4.9 constexpr变量:一定是常量,必须用常量表达式(字面值类型,包括算术类型、引用、指针)或constexpr函数(足够简单编译时可计算结果)初始化
4.10 类型说明符auto会忽略顶层const,保留底层const
4.11 指针、常量与类型别名:typedef char *pstring; const pstring cstr = 0;,与const char *cstr不等价,前者的cstr是指向char的常量指针,后者中cstr是指向常量char的指针