运算符与迭代器收尾
2026-07-31
技术
C 语言
今天讲了三块内容:
- 位运算符(
&|^~<<>>)— 清零、置一、翻转、移位,以及用掩码操作指定位的经典写法。关键口诀:n &= ~(0x1 << 17)清零第 17 位,n |= 1 << 9把第 9 位置一。 - 运算符优先级 — "独眼龙比两只眼的正常人更狠"(单目 > 双目),"算比位逻"(算术 > 比较 > 位 > 逻辑),三目倒数第三,赋值倒数第二,逗号最低。
- 类型转换 — 自动提升(
char → int → long → float → double)、强制转型语法(Type)expr、宽转窄截断、浮点转整数直接去尾。
Rust
Rustlings iterators 部分全部做完,笔记见 Rust/day6.md。今天每道题都卡了很久,暴露出 来的问题不是语法,而是不知道标准库有哪些方法可用:
capitalize_first—chars()+as_str()分割首字母和余下部分(1..=num).product()— 阶乘一行搞定,卡最久的一个flat_map— 拍平嵌套迭代器(&[HashMap<_,_>]→ 一条流)collect()— 会根据返回值类型自动判断收集成Vec、String还是别的
map_err 和 ok() + ? 的配合用法也比昨天熟练了。
思考
核心观点:人并非自主的主体,而是欲望驱动下的被动响应机器。
一、什么是"空壳"
"空壳"在这里指:人没有所谓"自主的意志"。你的每一个行动,背后都站着一种欲望。没有欲望作为燃料,人这台机器就不会运转。
二、两个论据
论据一:食欲——披着生存外衣的欲望
饿的时候,你会为了一口吃的拼命。人们认为这理所当然,因为底层逻辑是"为了生存"。
但换个角度看:你并不是在"选择"进食,你是在被饥饿感驱使着进食。你的行为只是一个生理信号的自动响应。
论据二:性欲——剥离生存借口后的纯粹欲望
性欲与生存无关(个体不交配并不会死)。
但当它出现时,人同样会倾尽所有去满足。这说明驱动力不是"生存的必要性",而是欲望的强度本身。
两个论据的共同结论:人的行为不是理性的自主选择,而是被欲望强度决定的。
三、为什么"安逸"是关键证据
如果人是自主的,那在安逸的环境中,人应该照样行动。
但事实相反:
安逸 → 懒惰 → 停滞 痛苦 → 欲望 → 行动
人只有在不舒服的时候才会动。行动的目的永远指向消除不舒服、制造安逸。
这说明:驱动源是负面的(痛苦/欲望),不是正面的(意志/理想)。人的行为是被"推着走",不是"朝着目标走"。
四、核心模型:欲望循环
欲望无法被满足
│
▼
痛苦(张力状态)
│
▼
改变(行动)
│
▼
满足(欲望被填补)
│
▼
欲望感知度降低(阈值升高)
│
▼
满足度下降
│
▼
痛苦(新的张力)
│
▼
改变 → 满足 → 阈值升高 → ...
这个循环没有终点。每一次满足都在抬高下一次满足的门槛。
五、类比:机器
| 机器 | 人 | |
|---|---|---|
| 能量耗尽 | 停止运转 | — |
| 欲望消失 | — | 停止行动 |
| 加燃料 | 重新运转 | — |
| 新欲望产生 | — | 重新行动 |
| 停止条件 | 零件损坏 | 死亡 |
机器因为燃料耗尽而停,因为加油而动。
人因为欲望满足而停,因为新欲望产生而动。
唯一的停止方式:机器坏掉,或者人死掉。
六、结论
人没有"想不想被驱动"的选择权——欲望产生的那一刻,驱动就已经发生了。
所谓 "自由意志" ,可能只是我们在事后给自己编的理由。
明日计划
-
C 语言:继续跟课堂节奏
-
Rust:推进到 smart_pointers