gcc -O1 编译 Quake 快速平方根倒数竟返回负数
tetsuoai · x · 2026-09-25
有人在 64 位 Linux 上用 gcc -O1 编译了 Quake III 经典的 fast inverse square root 代码,结果函数返回负数。作者解释了原因:代码中的长整型强制转换读取越过了 float 进入栈上其他数据,而返回地址的最低位恰好落进了符号位,导致结果变负。这是该著名 hack 依赖未定义行为在特定编译器/平台上翻车的具体案例。
「Fun」频道最新
- a16z 学院学员因发 a16z 创始人的恶搞梗图「被查岗」 — cto_junior · 2026-09-25
- 你在用 AI 复刻健身 App 时,Heidi Klum 把 10 美元红酒装进血袋卖了 — CtrlAltDwayne · 2026-09-25
- 把 AI 接上断头台做实验:模型差点亲手「处决」用户 — wild_crazy_ideas · 2026-09-25
- 维特根斯坦:把财产送给最富的亲戚以最小化金钱腐蚀 — birchlse · 2026-09-25
- Opus 一次生成可交互镜头焦距实验室,耗时 86 分钟花费 25.66 美元 — Promptmethus · 2026-09-25
- 用 Claude Opus 5.5 生成 6300 帧动画,做出苏轼一生中秋 MV — dotey · 2026-09-25