int a=200*100000000;a = Java综合
程序员文章站
2022-03-07 15:19:21
...
a=-1474836480;!!!!!!!!
无法理解,如果说int值溢出为什么不直接抛出异常?
有一个地方前端没限制输入,后台也没验证输入。
当输入如:100000000(一亿)之后服务器计算之后所有数值一切正常。因为200*100000000为一个负数!
也因为这样绕过了验证(服务端所有地方从来都没有考虑过负数的情况,也没有对有负数的地方验证)
由此:1-(-1474836480) 那么久变成了1474836480+1,照成了异常数值。
如何处理这种情况?真心觉得这种结果为负数的设计完全就是神经病,为什么不直接抛出异常
无法理解,如果说int值溢出为什么不直接抛出异常?
有一个地方前端没限制输入,后台也没验证输入。
当输入如:100000000(一亿)之后服务器计算之后所有数值一切正常。因为200*100000000为一个负数!
也因为这样绕过了验证(服务端所有地方从来都没有考虑过负数的情况,也没有对有负数的地方验证)
由此:1-(-1474836480) 那么久变成了1474836480+1,照成了异常数值。
如何处理这种情况?真心觉得这种结果为负数的设计完全就是神经病,为什么不直接抛出异常