有可靠的方法用X ++检测int64变量中的整数溢出吗?
示例:
int64 n;
n = 0x7FFFFFFFFFFFFFFF;
n += 1;
info(int642str(n));
参考:
How to detect double precision floating point overflow and underflow?
答案 0 :(得分:0)
来自here的改编代码:
int64 a, b;
#localmacro.ABS_INT
(%1 < 0 ? 0 - %1 : %1)
#endmacro
a = 0x7FFFFFFFFFFFFFFF;
b = 1;
if ( ((a < 0) == (b < 0)) && (#ABS_INT(b) > int64Max() - #ABS_INT(a)))
{
throw error(strFmt("Integer overflow in %1.", funcName()));
}
a += b;
info(int642str(a));