在不使用long的情況下提前判斷32位int數(shù)據(jù)是否溢出
2023-02-27 12:18 作者:付不起AQFubuki | 我要投稿
一般int的數(shù)據(jù)范圍:-2147483648~2147483647 [-2^31~2^31-1]
以正數(shù)舉例,如果一個數(shù)據(jù)大于214748364(最大數(shù)的十分之一),則在它乘以10后就會溢出;如果等于214748364,則需要判斷末位的加數(shù)是否大于7,如果大于則溢出。同理可得負(fù)數(shù)的溢出判斷。
(res*10+cur)>INT_MAX,(res*10+cur)<INT_MIN,還可以改寫為
res>(INT_MAX-cur)/10,res<(INT_MIN-cur)/10
標(biāo)簽: