【vim进阶知识】
【复制】:在命令模式下进行
yy + p //yy表示复制,p表示粘贴
Mp //粘贴M份
Nyy + Mp //复制N行,粘贴M行
shift + v //选中某行,上下键配合选择多行,选中后按一下y即可随意多行复制 按下p粘贴
【删除】:
dd // 删除光标所在行
Ndd //删除光标所在行及其下面一共Nhang
【剪切】:
Ndd + p //删除粘贴搭配即可
【撤销】:
u // 撤销上一步操作
【反撤销】:
ctrl + r //撤销上一步撤销操作
【C语言基础知识】
数据类型:
1什么叫数据类型?
-------- 数据的种类的划分
2.C语言中数据类型
基本数据类型 :
整型
字符型
浮点型
构造数据类型
指针类型
空类型
3. 数据类型 常量 vs 变量
常量 "在程序运行过程中", 不能改变的量
变量 "在程序运行过程中", 能被改变的量
4. 整型
常量形式:
123 //十进制的整型常量
0x123 //0x表示十六进制的整型常量
0123 //0表示八进制的整型常量
进制:(进位的制度)
逢几进1 (满几进1)
十进制:
0 1 2 3 4 5 6 7 8 9
10 11 12 13 ... 19
20 ...
八进制:
0 1 2 3 4 5 6 7
10 11 12 13 ... 17
20 ...
十六进制: // 10 11 12 13 14 15
0 1 2 3 4 5 6 7 8 9 a b c d e f
10 11 12 13 ... 1f
20 ...
二进制:
0 1
10 11
十进制 ===> 二进制
方法: 除2取余法(辗转相除法)
2|123
2|61 ... 1 (低位)
2|30 ... 1
2|15 ... 0
2|7 ... 1
2|3 ... 1
2|1 ... 1
2|0 ... 1 (高位)
111 1011(从下到上顺序写)
0111 1011(四位四位往高位左边补齐0)
方法:
加权求和
64 32 16 8 4 2 1
... 2^1 2^0
1 1 1 1 0 1 1
二进制 => 八进制
0 1 2 3 4 5 6 7
000 001 010 011 100 101 110 111
对应关系:
1位八进制数 对应 3位 二进制数
二进制 => 十六进制
对应关系:
1位十六进制进制数 对应 4位 二进制数
8 4 2 1 //8 4 2 1(四位四位看,口诀简便计算)
1 1 1 1
0xb109===》1011 1010 1001
1011 1010 1001
b 10 9
整型变量:
语法
定义变量
数据类型 变量名;
整型: unsigned / signed
int <=> signed int
short
long
long long
变量名:
是一个名字 --- 标识符
怎么起名字?(重点)
1.数字、字母、下划线组成
2.开头不能是数字
3.不能与关键字重名
4.不要和预处理命令 及 库函数名重名
eg:
int a_1;
int 1_a; //这个名字不合法
5. 数据类型的大小
表示的是该数据类型 所占内存空间的字节数
int 4字节
short 2字节
long 8字节
long long 8字节
sizeof(运算数) 计算运算数所代表的数据类型占用的内存空间的字节数 (注意是字节数不是比特数)
运算数 可以是一个类型名
sizeof(int)
可以是变两名
sizeof(a)
可以是个常量或表达式
sizeof(10)
sizeof(a+10)
6. 变量给值
int a = 10; //定义的同时给值 初始化
int a; a = 10; //赋值
变量之所以能变 --- 变量实际上对应是一块可以被修改的空间,强调是空间。
小端 高高低低
高位数据 存在 高地址(地址编号大) 处
低位数据 存在 低地址 处
0x12345678
常见设备:
x86 体系结构 --- 小端模式
51 单片机 ----大端模式
7. 整型数据的存储
小端存储
int a = 123; //00 00 00 7B
数据在计算机中如何存储?
计算机最终存储都是他们的补码形式
整数分 ---正数165、负数-165
正数---原码 反码 补码都一样
负数---补码=反码+1
如123
0111 1011 //原码
0111 1011 //反码
0111 1011 //补码
-7 //负数第一位作为符号位 ,0正1负,后面是数值位
1|000 0000 0000 0000 0000 0000 0000 0111 //原码
1|111 1111 1111 1111 1111 1111 1111 1000 //反码
1|111 1111 1111 1111 1111 1111 1111 1001 //补码
f f f f f f f 9 ---十六进制
负数的反码 是 原码 的符号位不变 其余位按位取反
练习:
-6735 //int
1|000 0000 0000 0000 0001 1010 0100 1111//原码
1|111 1111 1111 1111 1110 0101 1011 0000//反码
1|111 1111 1111 1111 1110 0101 1011 0001//补码
f f f f e 5 b 1
6. 整型类型取值范围
int 4字节
unsigned int 0~2^32-1
signed int -2^31 ~ 2^31- 1
short 2字节
unsigned short 0~2^16-1 //65535
signed short -32768 ~ 32767
long 8字节
long long 8字节
7.溢出
1111 1111 1111 1111
+ 1
1 0000 0000 0000 0000 //溢出
1|111 1111 1111 1110//补码
1|000 0000 0000 0010 //原码 -2
浮点型
关键字:
float //单精度 double//双精度 long double
4个字节 8个字节 16个字节
浮点数存储:
将十进制形式的小数,写成二进制小数
整数----除2取余法
小数---乘2取余法
12 --- 1100
0.125 * 2 = 0.25 --- 0
0.25 * 2 = 0.5 --- 0
0.5 * 2 = 1 --- 1
0.001
1位 符号位 | 8位 充当 指数位 | 23位 尾数位
0 3 + 127(偏移量) 100001
0100 0001 0100 0010 0000 0000 0000 0000 // 12.125 存到计算机中的样子
4 1 4 2 0 0 0 0 --------十六进制
浮点的比较
代码中出现的 变量 或 常量 一定有其对应的数据类型
代码中出现的 浮点型常量 默认识别为 double 类型
float
1位 符号位|8位 指数位 |23位 尾数位
+127
double
1位 符号位|11位 指数位 |52位 尾数位
+1023
浮点数的比较:
保证精度一致
类型一致
常量也可以指定类型:
0.9f //表示被识别为 float类型
123 //默认识别为 int类型
123L //识别为long类型
123LU //unsigned long
123LL //long long
123LLU //unsigned long long
【字符型】
符号 --- 放到计算机中
01010
'a' --编码--- 0101010
ASCII
'a' --计算机中保存实际上是这个符号 对应 ascii的编码值
0~32 控制字符(不可见字符)
48~57 数字字符 '0' ~ '9'
65~90 英文的26个大写 字母的符号
97~122 英文的26个小写 字母的符号
1.字符型常量
'a' //字符常量 a这个常量
2.字符型变量
char
char ch; //一个字节
char ch = 'a';
ch这个变量中 最终放的放的实际上是 'a' 对应的ascii码 值 (整型)
char //tiny int --小整型
char 也一种整型类型 说char和整型之间是通用的
unsigned char ch; //[0 ~ 255]
signed char a = 10; //[-128 ~ 127]
a = -10;
3.字符型 大小
一个字节
4. 应用
0~32 控制字符(不可见字符)
48~57 数字字符 '0' ~ '9'
65 ~90 英文的26个大写 字母的符号
97 ~122 英文的26个小写 字母的符号
char ch = '1';
printf("%d\n",ch - 48); //数值1
printf("%d\n",ch - '0'); //数值1
大写 转 小写 +32
练习1:
编写程序完成在终端打印:
*
***
*****
***
*
练习2:
请编译程序将“China ”译成密码,用原来字母后面的第4个字母代替原来的字母。
例如:
字母A后面的第四个字母是E,用E代替A。
因此"China"应译为"Glmre"。
请编一道程序,
用赋初值的方法使c1,c2,c3,c4,c5这5个变量分别为'C','h','i','n','a',
经过运算,
使c1,c2,c3,c4,c5分别为'G','l','m','r','e',然后输出。