一般int的数据范围:-2147483648~2147483647 [-2^31~2^31-1]
以正数举例,如果一个数据大于214748364(最大数的十分之一),则在它乘以10后就会溢出;
如果等于214748364,则需要判断末位的加数是否大于7,如果大于则溢出。
同理可得负数的溢出判断。
if(res>214748364 || (res==214748364 && cur>7)){
//正数溢出
}
if(res<-214748364 || (res==-214748364 && cur<-8)){
//负数溢出
}
(res*10+cur)>INT_MAX,(res*10+cur)<INT_MIN,因此还可以改写为
res>(INT_MAX-cur)/10,res<(INT_MIN-cur)/10