一、 数据类型和存储
1.数据类型
数据类型 | 字节数 | 范围 |
char | 1 | -128 ~ 127 |
short | 2 | -2^15 ~ 2^15-1(-32768 ~ 32767) |
int | 4 | -2^31 ~ 2^31-1(21.47亿 ~ 21.47亿) |
long | 4/8 | |
float | 4 | 小数点后6位,-3.4e38 ~ 3.4e38 |
double | 8 | 小数点后15位,-1.7e308 ~ 1.7e308 |
unsigned char | 1 | 0 ~ 255 |
unsigned short | 2 | 0 ~ 2^16-1(0 ~ 65535) |
unsigned int | 4 | 0 ~ 42.9亿 |
unsigned long | 4/8 | |
指针 | 4/8 |
2.类型转换
2.1隐式转换
小类型向大类型转换,同类型有符号向无符号转换
2.2显示转换
static_cast<类型>():静态转换(强转)
dynamic_cast<类型>():动态转换,用于将父类强转为子类
const_cast<类型>():去常转换
reinterpret_cast<类型>():重解释转换(基本不用)
3.进制转换
3.1十进制转换为其他进制
例:十进制转二进制,将10转换为二进制
10/2 = 5 余 0
5/2 = 2 余 1
2/2 = 1 余 0
1/2 = 0 余 1
转换后结果为 1010
3.2其他进制转换为十进制
例:二进制转为十进制,将 1111转换为十进制
1*2^0+1*2^1+1*2^2+1*2^3 = 1+2+4+8 = 15
4.原码反码补码
4.1正数
原码 = 反码 = 补码
4.2负数
原码不算符号位各位取反 = 反码
反码加一 = 补码
5.大端存储小端存储
由于计算机物理地址从低到高
低地址存低字节为小端存储
低地址存高字节为大端存储
6.运算符优先级
1 | [] () . -> | 从左到右 | 前导运算符 |
2 | - (type)++ -- * & ! ~ sizeof | 从右到左 | 单目运算符 |
3 | * / % | 从左到右 | 双目运算符(算术) |
4 | + - | 从左到右 | 双目运算符(算术) |
5 | << >> | 从左到右 | 双目运算符(位移) |
6 | > >= < <= | 从左到右 | 双目运算符(大小关系) |
7 | == != | 从左到右 | 双目运算符(大小关系) |
8 | & | 从左到右 | 双目运算符(位逻辑) |
9 | ^ | 从左到右 | 双目运算符(位逻辑) |
10 | | | 从左到右 | 双目运算符(位逻辑) |
11 | && | 从左到右 | 双目运算符(逻辑) |
12 | || | 从左到右 | 双目运算符(逻辑) |
13 | ?: | 从右到左 | 三目运算符 |
14 | = /= *= %= += -= <<= >>= &= ^= |= | 从右到左 | 赋值运算符 |
15 | , | 从左到右 | 逗号表达式 |
二、流程结构
1.if else
2.switch(整型或整型表达式) case 整型常量或表达式
三、字符串
例:char str1[10] = "abcd" str1是常量 ,其内容在栈区可读写 ,sizeof(str1)=10,strlen(str1)=4
char* str2 = "abcd" str2是变量,其指向的内容在字符常量区只读,sizeof(str2)=5 ,strlen(str2)=4
四、结构体与联合体(考察对齐方式)
4.1结构体
struct Node
{
int a;
char b[5];
};
sizeof(Node)=12 把char b[5]看作五个char,四字节对齐
4.2联合体
union u
{
int a;
char b[5];
};
sizeof(u)=8 四字节对齐
五、文件
r:只读,文件必须存在 | b:二进制 | +默认从头写,写时覆盖 |
w:只写,文件存在则清空,不存在则新建 | b:二进制 | +读写,打开文件清空 |
a:添加只写,文件存在则在尾部添加,不存在新建 | b:二进制 | +读写,在尾部追加 |