开始学习
2026-08-03
技术
C 语言
学习内容:C 语言 Day7 笔记——流程控制结构
选择结构
| 结构 | 语法 | 适用场景 |
|---|---|---|
if 单分支 |
if (表达式) { ... } |
条件满足时执行 |
if-else 双分支 |
if (表达式) { ... } else { ... } |
二选一 |
if-else if-else 多分支 |
多个 else if 级联 |
多选一 |
switch |
switch (整数) { case 值: ... break; } |
整数的等值比较 |
- C 语言中非零即为真,零为假
switch有**穿透(Fall-through)**特性,漏写break会继续执行后续 case- 空语句
;也是合法语句,编译后对应 NOP 指令
循环结构
| 循环 | 最少执行次数 | 适用场景 |
|---|---|---|
while (条件) { ... } |
0 次 | 循环次数未知 |
do { ... } while (条件); |
1 次 | 至少执行一次 |
for (初始化; 条件; 迭代) { ... } |
0 次 | 循环次数已知(最常用) |
- for 的三个表达式都可留空,但两个分号必须写
- 精确控制 n 次循环:
for (int i = 0; i < n; i++) - 嵌套不建议超过 3 层
跳转语句
| 语句 | 作用 |
|---|---|
break |
结束 switch 或跳出当前层循环 |
continue |
跳过本次循环剩余部分,进入下一次迭代 |
goto |
无条件跳转到标签处(不推荐使用) |
输入输出
printf("格式串", 变量...)— 格式化输出scanf("格式串", &变量...)— 格式化输入,必须传地址&
小工具
今天写了个小脚本 run.html,用于简化单个 C 文件的编译运行流程。
Rust
今天学的内容不多,主要是线程部分的巩固复习。
之前 Rustlings threads 章节已经做完了,但感觉自己还是不太熟,今天重新手写了一遍基础用法:
use std::thread;
use std::time::Duration;
fn main() {
// join 等待子线程完成
let handle = thread::spawn(|| {
thread::sleep(Duration::from_secs(3));
println!("子线程:下载完成!");
});
println!("主线程:做别的事");
handle.join().unwrap();
println!("主线程:子线程结束了,我也结束了");
// 不 join 的情况:主线程结束时子线程可能还没跑完
thread::spawn(|| {
thread::sleep(Duration::from_millis(100));
println!("子线程:完成了!");
});
println!("主线程:结束了");
// 这里主线程结束,子线程可能来不及执行
}
复习要点:
thread::spawn创建新线程,返回JoinHandlehandle.join()阻塞主线程,等待子线程完成- 不
join的话,主线程结束程序就结束了,子线程可能来不及执行 move闭包用于把外部变量所有权移入线程
思考
价值是通过他人评判出来的吗?人的价值只能通过外部评判出来吗?
我觉得是的。
拿梵高的画来说——他死前根本没人看得上。如果说梵高的画"本来就有价值",那该怪谁?怪世道吗?
他死后才被人看到。人们常说他的价值被"发现"了,但"发现"这个词不准——因为他死前根本没人看出来,何来发现一说?
换个角度想:假如那时候有人出钱给他办个展,大力宣传一番,有权有势的人来了、捧了,人们自然就觉得他的画有价值了。
所以归根结底,价值是人自己赋予的。
如果有人说"价值本身就在那里,不需要谁来承认"——这不过是人试图用自己定义的框架,去框住一个本不属于它的名字罢了。
明日计划
- Rust:继续线程部分深入学习——
mpsc::channel消息传递、Arc<Mutex<T>>共享内存模式