gcc -O1 编译 Quake 快速平方根倒数竟返回负数

tetsuoai · x · 2026-09-25

有人在 64 位 Linux 上用 gcc -O1 编译了 Quake III 经典的 fast inverse square root 代码,结果函数返回负数。作者解释了原因:代码中的长整型强制转换读取越过了 float 进入栈上其他数据,而返回地址的最低位恰好落进了符号位,导致结果变负。这是该著名 hack 依赖未定义行为在特定编译器/平台上翻车的具体案例。

原文链接 →

「Fun」频道最新

更多「Fun」频道 AI 资讯 →