27届转码C++Day02
目标大厂,冲就完事儿了
- 实现输入输出的一个小程序:
- 读取输入 scanf("%f", &var); 根据读取的输入(var), 然后对var进行后续的处理
- 同时代码读取规范也同样重要,如果突然在代码中间加了一个数字的话,没有任何说明这样可读性很差。
- 对于一些恒定的变量可以用预处理器提前声明。define SCALAR = 32类似这样
- CPU、内存、外部设备。内存、虚拟内存。程序、进程。进程调用的是内存还是虚拟内存,程序调用的是内存还是虚拟内存?
- 格式化输出:
1. Printf: f -> format(格式化,控制输出的格式)
2. 具体printf从键盘读取到最终打印出来的流程:
[图片1]
3. 格式化输出的语句格式:printf(格式串,表达式1,表达式2,。。。)
int i = 10;
float f= 3.14f;
printf("i=%d, f = %f\n", i, f)
4. printf具体的原理是:打印格式串的内容,并用后面的表达式替换格式串中的转换说明
5. 格式串的具体语句:
->对于普通字符,也就是字符串,他直接原样输出
->对于转换说明,他的作用是占位符比如 %d %f等等。他有具体格式: %m.pX %-m.pX
比如%d, %2d, %6d 分别代表的意思是占一位、占二位、占六位。
%.2d, %.4d, %.6d分别代表保留几位小数点。 比如 %10.2d:10代表占10位,2代表保留2位有效数字。
6. %d%f在读取键盘输入的时候代表的是什么意思呢?%d:忽略前置的空白字符(' ',\n,\t,\r,\f),匹配有效的10进制整数;%f忽略前面的空白字符(' ',\n,\t,\r,\f)匹配一个浮点数
7. scanf本质就是一个匹配函数,类似于正则表达式。
8. gcd -> if b == 0 return a else return gcd(b, a%b)
- 整型:
1. 无符号整数:unsigned short (int), unsigned(int),unsigned long, unsigned long long
2. 有符号整数:short (int), int, long(int), long long(int)
- 编码(位运算)
1. 无符号整数:类似于正常2进制转化为10进制: 1010_1010(2)的值为=128 + 32 + 8 +2 =170
2. 有符号整数:有符号整数一律采取补码:1010_1010(2) = -128 + 32 + 8 + 2 = -86。
3. 补码的性质:a) 如果一个有符号整数他的二进制表示都是1那么他的10进制表示的值就是-1。
[图片2]
b) 有符号整数 a + (~a) = 1111...(2) = -1 (10) ps:~a代表按位取反 ---性质1
c) 有符号整数 a + (-a) =100...000000(2) = 0 (10) ps:这里的2进制表示的1会被丢弃所以结果会变成0.
一个问题:有符号整数二进制表示为 11010100(2)他的相反数的二进制表示为?
[图片3]
- 浮点数:float, double, long, double IEEE 754标准
- Char ASCII: 码点0 32 48 65 97 -> 字符‘\o’ 空字符 ; ‘ ’空格; '0'; 'A' ; 'a'
1. 控制字符:0-31这个是不可以打印的。
2. 转义字符:
[图片4]
3. 数字转义字符:
[图片5]
4. !!!C语言是把字符当成小的整数来进行处理的 !!!=》整数能支持的操作,字符类型也能支持
5. 字符分类函数:查表 大小写转换函数
[图片6]
6. 如何和用户交互:输入输出
输出:printf ; putchar(c)
- 类型转换
1. (隐式转换)不同类型进行加法运算的时候最后的类型会根据一个优先级别表进行分配。比如long long + long = long long 而 int + long = long
- 最好尽量避免使用无符号整数,特别是不要把他和有符号整数混合使用:
[图片7]
2. (显式转换)强制转换。int i; float f = 6.17f i = (int)f
- 计算浮点的小数部分
- 注释作用
- 精确控制转换类型
- 强制类型转换避免溢出
[图片8]
- sizeof:计算某一类型的值,所占内存的长度,单位为字节
  - 实现输入输出的一个小程序:
- 读取输入 scanf("%f", &var); 根据读取的输入(var), 然后对var进行后续的处理
- 同时代码读取规范也同样重要,如果突然在代码中间加了一个数字的话,没有任何说明这样可读性很差。
- 对于一些恒定的变量可以用预处理器提前声明。define SCALAR = 32类似这样
- CPU、内存、外部设备。内存、虚拟内存。程序、进程。进程调用的是内存还是虚拟内存,程序调用的是内存还是虚拟内存?
- 格式化输出:
1. Printf: f -> format(格式化,控制输出的格式)
2. 具体printf从键盘读取到最终打印出来的流程:
[图片1]
3. 格式化输出的语句格式:printf(格式串,表达式1,表达式2,。。。)
int i = 10;
float f= 3.14f;
printf("i=%d, f = %f\n", i, f)
4. printf具体的原理是:打印格式串的内容,并用后面的表达式替换格式串中的转换说明
5. 格式串的具体语句:
->对于普通字符,也就是字符串,他直接原样输出
->对于转换说明,他的作用是占位符比如 %d %f等等。他有具体格式: %m.pX %-m.pX
比如%d, %2d, %6d 分别代表的意思是占一位、占二位、占六位。
%.2d, %.4d, %.6d分别代表保留几位小数点。 比如 %10.2d:10代表占10位,2代表保留2位有效数字。
6. %d%f在读取键盘输入的时候代表的是什么意思呢?%d:忽略前置的空白字符(' ',\n,\t,\r,\f),匹配有效的10进制整数;%f忽略前面的空白字符(' ',\n,\t,\r,\f)匹配一个浮点数
7. scanf本质就是一个匹配函数,类似于正则表达式。
8. gcd -> if b == 0 return a else return gcd(b, a%b)
- 整型:
1. 无符号整数:unsigned short (int), unsigned(int),unsigned long, unsigned long long
2. 有符号整数:short (int), int, long(int), long long(int)
- 编码(位运算)
1. 无符号整数:类似于正常2进制转化为10进制: 1010_1010(2)的值为=128 + 32 + 8 +2 =170
2. 有符号整数:有符号整数一律采取补码:1010_1010(2) = -128 + 32 + 8 + 2 = -86。
3. 补码的性质:a) 如果一个有符号整数他的二进制表示都是1那么他的10进制表示的值就是-1。
[图片2]
b) 有符号整数 a + (~a) = 1111...(2) = -1 (10) ps:~a代表按位取反 ---性质1
c) 有符号整数 a + (-a) =100...000000(2) = 0 (10) ps:这里的2进制表示的1会被丢弃所以结果会变成0.
一个问题:有符号整数二进制表示为 11010100(2)他的相反数的二进制表示为?
[图片3]
- 浮点数:float, double, long, double IEEE 754标准
- Char ASCII: 码点0 32 48 65 97 -> 字符‘\o’ 空字符 ; ‘ ’空格; '0'; 'A' ; 'a'
1. 控制字符:0-31这个是不可以打印的。
2. 转义字符:
[图片4]
3. 数字转义字符:
[图片5]
4. !!!C语言是把字符当成小的整数来进行处理的 !!!=》整数能支持的操作,字符类型也能支持
5. 字符分类函数:查表 大小写转换函数
[图片6]
6. 如何和用户交互:输入输出
输出:printf ; putchar(c)
- 类型转换
1. (隐式转换)不同类型进行加法运算的时候最后的类型会根据一个优先级别表进行分配。比如long long + long = long long 而 int + long = long
- 最好尽量避免使用无符号整数,特别是不要把他和有符号整数混合使用:
[图片7]
2. (显式转换)强制转换。int i; float f = 6.17f i = (int)f
- 计算浮点的小数部分
- 注释作用
- 精确控制转换类型
- 强制类型转换避免溢出
[图片8]
- sizeof:计算某一类型的值,所占内存的长度,单位为字节
全部评论 
 相关推荐
 点赞 评论 收藏   
分享