我正在构建一个 Lisp,如果计算会导致它们溢出,我希望 32 位整数自动切换到 64 位整数。同样,对于 64 位溢出,切换到任意大小的整数。
我的问题是我不知道检测整数溢出的“正确”方法是什么。
a, b := 2147483647, 2147483647 c := a + b
如何有效地检查 c 是否溢出?
我考虑过总是转换为 64 位值来进行计算,然后在可能的情况下再次缩小规模,但这对于与基本算术一样原始和语言核心的东西来说似乎很昂贵并且浪费内存。
GCT1015
慕姐8265434
相关分类