【发布时间】:2010-07-11 21:05:33
【问题描述】:
在接近 C、C++ 和 D 等金属语言的情况下,检测无符号溢出的最有效的合理可移植方式是什么(即不使用汇编程序,尽管您可能会假设二进制补码算术和环绕行为) 64位整数乘法?
【问题讨论】:
-
C 和 C++ 完全指定了无符号类型的环绕行为,而二进制补码与此类类型无关。
-
@Mark:C99 很好。我主要对 D 感兴趣,但我将 C 和 C++ 放在问题中,因为对它们的任何答案都可能适用于 D。
-
@dscimcha:如果你明确表示你想要 D 的答案,而不仅仅是任何类似 C 的语言,你 a) 会得到你可以使用的答案 b) 你的问题不会'还没有作为副本关闭。
-
@Mark:我认为不拒绝 C/C++ 答案更有意义,因为 C 和 C++ 比 D 更受欢迎,并且在整数等低级内容方面非常相似。