前言
在进入vi之前,按Crtl+Shift+T可以将窗口并列为两个窗口。
同时,按Alt键,和1、2 即可进行页面切换。这样做方便了避免重复多次进入vi。
一、(补充day02)字符型数据
- \b中退格是指将光标退格
二、变量初始化
int i = 1234 ;
在给i开辟空间时,同时把1234写入空间。
三、各类数值型数据间混合运算
3.1 各类数值的转换
两种转换方式,分别为隐式转换和显式转换。
- 隐式转换:低级别的数据类型会被隐含的转换为高级别数据类型(编译器自动转换)
- 显示转换(也称强制类型转换):如,
int i=2; (double) i;
3.2 小练习
printf函数输出浮点型时会保留小数点后6位有效数字,如果其后还有数则四舍五入考虑是否进位。那么,如何避免printf进行四舍五入呢?
- 思路:1.首先,将所得数*1000000并转换为int型 此步使得直接取小数点后6位,第7位直接略去
2.再将其转换double型,再除以1000000 或 直接除以1000000.0
- 实现:
四、算术运算符与算术表达式
4.1 算术运算符
%有以下注意点:
- 要求操作数数据类型为整型或与整型相兼容的数据类型
- 最终符号由左操作数决定
- 右操作数不能为零
- 最终结果一定小于右操作数
4.2 算术表达式
算术运算符与操作数形成算术表达式。(任何表达式都有数据类型)
4.3 自增、自减运算符
- 当编译器发现前置++时,对i值进行改变
- 当编译器发现后置++时,编译器创造临时变量复制i原有值,成为i++,但i值已经改变
4.4 小练习
练习1:在100道题中随机抽取10道,如何实现?
- 思路:1.如何获得随机数:随机数引入#include<stdlib.h>,使用random函数,srandom函数
引入#include<time.h>,使用time函数
2.使题目在0~99之间,使用%
- 实现:
图4.1 代码展示
图4.2 结果展示
练习2:若不取前50道题,再随机抽取如何实现?
- 思路:1.基本问题已经解决
2.l%100的范围为[0,99] 则l%50的范围为[0,49],其后再加50,可得[50,99]
- 实现:
图4.3 代码展示
图4.4 结果展示
五、赋值运算符与赋值表达式
5.1 赋值运算符
赋值运算符的优先级位于14,若同时出现多种赋值运算符,则考虑其结合方向,此处运算符结合方向为自右向左。
lvalue(左值) | rvalue(右值) |
能放在赋值运算符左边 | 只能放在赋值运算符的右边,不能放在赋值运算符的左边 |
变量 | 常量 |
locatiable可定位 | readable可读 |
关键词const:定义前加const,变为只读变量,不能对值进行修改,如,
- const int i
- int const i
#define N 100 给100起别名为N
5.2 类型转换
情况1:double = int |
double d; int i = 1234; d = i; |
无严重错误 | |
情况2:int = double |
double d = 123.456; int i; i = d; |
小数部分截断 | |
情况3:short = int |
short s; int i = 12345678; s = i; |
高位截断 | |
情况4:long = signed short |
int i; short s; s = 12345; i = s; |
符号位扩展(空位根据短数据类型的符号位填充) | |
情况5:long = unsigned short |
int i; unsigned short s; s = 12345; i =s; |
补零扩展 | |
情况6: %d 有符号十进制 %u 无符号十进制 |
unsigned u; u = -1; printf("%d\n",u); printf("%u\n",u); |
六、心得体会
知识点较为繁琐,需多复习多练习。