【发布时间】:2012-11-06 12:43:29
【问题描述】:
我想知道检查 32 位和 64 位的算术溢出是否有区别? (除了限制..)
例如对于 32 位乘法 a * b:
if(b > 0 && a > UINT32_MAX_VALUE / b) {
//Overflow
}
我可以对 64 位乘法使用相同的逻辑吗? 喜欢:
if(b > 0 && a > UINT64_MAX_VALUE / b) {
//Overflow
}
当我必须检查有符号/无符号的 64 位溢出时是否有任何陷阱?
【问题讨论】:
-
不,原理完全一样。只有常数不同。
标签: c math 64-bit overflow 32-bit