美文网首页
iOS开发 integer overflow in expres

iOS开发 integer overflow in expres

作者: 我是卖报的小行家 | 来源:发表于2020-10-11 15:56 被阅读0次

问题1:当我们定义一个很大的数时候,会溢出,报错如下:Overflow in expression; result is -813934592 with type 'int'
如下图


溢出

原因:

每个值都是integer, 但是相乘的值超过了integer最大值(2147483647), 所以编译出错。

解决方案

//将相乘的第一个数转成long即可。
long deltaTime = 90L * 86400 * 1000;

扩展
当我们在定义宏定义时候

//1.正确做法
#define BigNumber (4000LL * 1024 * 1024 * 1024)
//2.错误做法
#define BigNumber (4000 * 1024 * 1024 * 1024)

问题2:Thread 1: Exception: "-[__NSCFString longValue]: unrecognized selector sent to instance 0x2807bae80"

本地代码

解决方案

 long deltaTime = 90L * 86400 * 1000;            
 for (NSDictionary * dic in weakSelf.historyCacheDataModelArray) {
     if ([dic[@"lastTime"] integerValue] - [currentTime longLongValue]<= deltaTime) {
         [weakSelf.dealHistoryArray addObject:dic[@"keyWords"]?dic[@"keyWords"]:@""];
     }
 }

相关文章

网友评论

      本文标题:iOS开发 integer overflow in expres

      本文链接:https://www.haomeiwen.com/subject/mjyepktx.html