File tree Expand file tree Collapse file tree 5 files changed +48
-19
lines changed
Expand file tree Collapse file tree 5 files changed +48
-19
lines changed Original file line number Diff line number Diff line change @@ -84,4 +84,4 @@ int main(void) {
8484
85851 . [ ** [ 11001] ** ] ( /教程/题解/语法和标准库/结构体/11001.md ) 实现** 复数** 结构体,并实现加、减、乘、除运算,以及求模长和辐角。
86862 . [ ** [ 11002] ** ] ( /教程/题解/语法和标准库/结构体/11002.md ) 实现** 分数** 结构体,并实现其加减乘除运算。要求输出的结果为最简分数。
87- 3 . * 实现** 初等函数** 结构体,并实现其求导和近似定积分的操作。
87+ 3 . \* 实现** 初等函数** 结构体,并实现其求导和近似定积分的操作。
Original file line number Diff line number Diff line change 11# 泛型选择
22
3- 泛型选择(Generic Selection) 是 C23 标准引入的一个新特性,它根据表达式的类型来选择不同的值。通过 ` _Generic ` 关键字实现。
3+ 泛型选择(Generic Selection) 是 C11 标准引入的一个新特性,它根据表达式的类型来选择不同的值。通过 ` _Generic ` 关键字实现。
44
55## 基本语法
66
@@ -69,10 +69,3 @@ float max_float(float a, float b) {
6969 return (a > b) ? a : b;
7070}
7171```
72-
73- ## 注意事项
74-
75- 1. 泛型选择在编译时进行,不会产生运行时开销
76- 2. 每个类型只能出现一次
77- 3. 表达式不会被求值,只会用来判断类型
78- 4. 类型匹配必须精确,不会进行隐式类型转换
Original file line number Diff line number Diff line change @@ -20,10 +20,31 @@ C 中的 `=` 表示**赋值**
2020
2121### 2.2.3 一元 ` + ` 和一元 ` - `
2222
23+ #### 2.2.3.1 一元 ` - `
24+
25+ 可以改变一个数的符号。
26+
2327### 2.2.4 加法类运算符 ` + ` ` - `
2428
2529### 2.2.5 乘法类运算符 ` * ` ` / ` ` % `
2630
31+ #### 2.2.5.1 乘法 ` * `
32+
33+ ` * ` 是一个二元运算符,用于计算乘法。
34+
35+ #### 2.2.5.2 除法 ` / `
36+
37+ 1 . 整数除以整数,结果为整数,向零取整:
38+
39+ ``` c
40+ int a = 6 / 3 ; // a = 2
41+ int b = 5 / 3 ; // b = 1
42+ int c = -6 / 2 ; // c = -3
43+ int d = -5 / 2 ; // d = -2
44+ ```
45+
46+ #### 2.2.5.3 取余 ` % `
47+
27481 . 整数 ÷ 整数 => 商 …… 余数
2849 对于上面的式子,` / ` 得到商,` % ` 得到余数
2950
@@ -41,25 +62,32 @@ C 中的 `=` 表示**赋值**
4162
4263### 2.2.10 ` sizeof ` 运算符
4364
44- ### 2.2.11 ` _AlignOf ` 运算符
65+ ### 2.2.11 ` _AlignOf ` 运算符
4566
46- ### 2.2.12 逗号运算符
67+ ### 2.2.12 逗号运算符 ` , `
4768
48- ### 2.2.13 成员访问运算符
69+ ### 2.2.13 成员访问运算符 ` -> ` ` . `
4970
50- ### 2.2.14 函数调用运算符
71+ ### 2.2.14 函数调用运算符 ` () `
5172
5273### 2.2.15 转型运算符
5374
54- > ` 2.2.1 ` ` 2.2.7 ` 合称 ** 赋值运算符**
55- > ` 2.2.3 ` ` 2.2.4 ` ` 2.2.5 ` ` 2.2.6 ` 合称 ** 算术运算符**
56- > ` 2.2.9 ` ` 2.2.10 ` ` 2.2.11 ` ` 2.2.12 ` ` 2.2.14 ` ` 2.2.15 ` 被归类为 ** 其他运算符**
75+ > ` 2.2.1 ` ` 2.2.7 ` 合称** 赋值运算符**
76+ > ` 2.2.3 ` ` 2.2.4 ` ` 2.2.5 ` ` 2.2.6 ` 合称** 算术运算符**
77+ > ` 2.2.9 ` ` 2.2.10 ` ` 2.2.11 ` ` 2.2.12 ` ` 2.2.14 ` ` 2.2.15 ` ~~ 似乎可以叫做“ 其他运算符” ~~
5778
5879## 3. 结合性
5980
60811 . 当多个优先级相同的运算符作用于同一个操作数,需要有规则决定计算的顺序
61- 2 . 举例:` a+b+c ` 中,先计算 ` a+b `
62- 3 . 当运算没有结合律(如减法),或有副作用(如赋值),结合性的定义很有必要
82+ 2 . 举例:` a + b + c ` 中,由于加法具有左结合性,所以操作数 ` b ` 属于左边的 ` + ` 。把这个表达式用树形表示就是:
83+
84+ ``` mermaid
85+ graph TD;
86+ add1("\+") --> add2("\+");
87+ add1("\+") --> c;
88+ add2("\+") --> a;
89+ add2("\+") --> b;
90+ ```
6391
6492## 4. 优先级
6593
Original file line number Diff line number Diff line change @@ -101,3 +101,7 @@ int main(void){
101101```txt
10210210.9 + 8.9 = 19.8
103103```
104+
105+ ## 习题
106+
107+ 1 . 编写函数 ` void fill_area(char ch, int width, int height) ` ,实现功能:打印 ` ch ` 字符 ` height ` 行 ` width ` 列。
Original file line number Diff line number Diff line change 22
33总结一下前几章讲的各种声明,并且进行混合使用
44
5- ## 1. 声明由三部分构成:属性说明符序列,说明符与限定符,声明符与初始化器
5+ ## 1. 声明的构成
6+
7+ - 属性说明符序列
8+ - 说明符与限定符
9+ - 声明符与初始化器
610
711### 1.1 说明符与限定符
812
You can’t perform that action at this time.
0 commit comments