day1
学习了ubantu的基本操作方法
cd 进入文件夹
cd .. 退出当前文件夹
mkdir 创建文件夹
rm 删除文件
ls 查看文件
touch + 文件名 创建普通的文件
mv 文件名/文件夹名 路径
当路径的文件或者文件夹不存在的时候,相当于重命名
mv 文件名/文件夹名 路径
当路径的文件或者文件夹不存在的时候,相当于重命名
vim编译器
底行模式
命令行模式
插入模式
- 命令行模式
Yy 复制一行
Nyy 复制n行
U 撤销一次操作
Dd 删除一行
Ndd 删除n行
- 底行模式
w保存 wq 保存并退出 x == wq q!
Set nu 设置行号 setnonu不设置行号
Range: s/str1/str2/gc
Range:代表的是范围 %代表全部行 . 代表当前行 $代表的是最后一行
行数1,行数2
S:替换命令
Str1:原来的字符串
Str2:新的字符串
g:可选择 ,有的话替换的时候所有行都替换,没有就替换遇到的第一个字符
c:可选择,执行前进行询问
day2
类型转换 常量 变量 存储类型 printf和scanf 局部变量 全局变量 生命周期
1.强制类型转换
float a = 3.2452525;int b = int (a);人为发起的类型转换。不会因为数据发生四舍五入
2.隐式类型转换
发生在数据运算的内部
输入输出
输入:scanf(“格式控制符”,地址表);
输出:printf(“格式控制符”,输出表);
为什么scanf要用&?
我要把数字放到这篇空间里面去,但是内存中可能会存在相同名字的空间,所以我需要把数据准确的放到我想要的空间,就是知道空间的地址。
格式控制符:
%d int %5.2 d%m.nd m控制对齐的方式,负数左对齐,正数右对齐 n如果大于有效位数,往左边补零,如果小于有效位数,不发生改变 %c 字符的格式控制符
%*c的作用是抑制一个字符生效,这个字符可以是任意字符 \t 是转义字符代表一个table键,\n也是转义字符,代表换行 %s 是打印字符串的格式控制符 %f 打印浮点型数据,%M.nf M是正数或者负数都只是控制域宽,不需要对齐,当N小M的时候,跟着域宽的大小走,当N大于M的时候,跟着N的大小走(保留N的大小,小数点前面正常输出),%o 打印八进制 %x打印十六进制。
常量
值在程序运行过程当中不发生改变。不能作为表达式的左值 10 = a;
- 整型常量
十进制:97
八进制:076
十六进制:0xab
- 字符常量
用单引号包裹起来的量 ‘a’ ‘*’ ‘1’ ‘5’
- 字符串常量
用双引号包裹起来的量 “abcd” “*&A”
- 小数型变量
浮点型:3.14
指数型:2e+7
- 宏常量
当宏是数字的时候,只是一个简单名字
当宏是表达式的时候,是一个带参数的名字
变量
存储类型 数据类型 变量名;
存储类型:需要在内存的什么地方开辟空间
数据类型:开辟多大的空间
变量名:给这个空间起的名字
全局变量和局部变量
全局变量:在main函数外部定义的变量叫全局变量
局部变量:在main函数内部定义的变量叫局部变量 对于局部变量来说不进行初始化和赋值,他的结果是随机数
存储类型
四个关键字
Auto:修饰的是局部变量,可以省略。默认的存储类型
Register:被修饰的变量叫寄存器变量。放在寄存器当中。
Static:被修饰的变量叫做静态变量。
Extern:引用外部变量。
局部变量:
被static修饰的局部变量,相当于延长了局部变量的生命周期
被static修饰的全局变量缩小了作用域
生命周期和作用域
- 生命周期:离变量最近的上面的前括号开始,到跟这个前括号匹配的后加括号结束。
- 作用域:在那个文件内生效
被static修饰的变量的作用域和生命周期
- 被static修饰的局部变量:延长了生命周期
- 被static修饰的全局变量:缩小了作用域
全局变量和局部变量可不可以重名?
可以,重名的时候优先使用局部变量,当局部变量失效的时候,再使用全局变量
运算符
- 算术运算符
+ - * / % (只能用于整型)++ --
- 逻辑运算符
&& || !
两个都为假,表达式整体才为假
- 关系运算符
< > <= >= ==
- 三目运算符
? : a>b?a :b