由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - str2int中overflow该如何处理?
相关主题
问一个atoi overflow的问题问个简单C reverse int
经典题atoi的溢出处理帮忙看看我写的atoi有没有bug, 谢谢
关于atoi的overflow弱弱的问一个问题
reverse an integer 怎么判断是否 overflow 来着函数atoi的实现
大牛,过来讨论一下这道题atoi overflow怎么办?
问个越界的问题新鲜Google面经
onsite完,攒rp系列(二)请教一个题目
请问如何安全地reverse 一个integer写了个atoi,大家帮看有没有哪里错了?
相关话题的讨论汇总
话题: int话题: max话题: overflow话题: str2int话题: result
进入JobHunting版参与讨论
1 (共1页)
C***y
发帖数: 2546
1
我的想法是
先转成一个long,然后和INT_MIN和INT_MAX比
最后convert成int输出
不知这个办法是否合适
j*****u
发帖数: 1133
2
在每次
result = result * 10 + str[i] - '0';
之后check result < 0,如果overflow就会变负
如果C#的话用checked{ } wrap,或者complier打开/checked+,就会自动throw Ov
erflowException()

【在 C***y 的大作中提到】
: 我的想法是
: 先转成一个long,然后和INT_MIN和INT_MAX比
: 最后convert成int输出
: 不知这个办法是否合适

C***y
发帖数: 2546
3
这个办法不错
谢谢!

【在 j*****u 的大作中提到】
: 在每次
: result = result * 10 + str[i] - '0';
: 之后check result < 0,如果overflow就会变负
: 如果C#的话用checked{ } wrap,或者complier打开/checked+,就会自动throw Ov
: erflowException()

l*****a
发帖数: 14598
4
之前处理也可以,也许更直接
目标 result*10+str[i]-'0'<=MAX_INT
1) result 2) result=MAX_INT/10 && str[i]-'0'<=MAX_INT/10

【在 C***y 的大作中提到】
: 这个办法不错
: 谢谢!

C***y
发帖数: 2546
5
是不是应该先判断一下 result==INT_MIN
result==INT_MIN的时候虽然<0,但实际上是没有overflow的

【在 j*****u 的大作中提到】
: 在每次
: result = result * 10 + str[i] - '0';
: 之后check result < 0,如果overflow就会变负
: 如果C#的话用checked{ } wrap,或者complier打开/checked+,就会自动throw Ov
: erflowException()

m******m
发帖数: 19
6

str[i]-'0'<=MAX_INT%10 ?

【在 l*****a 的大作中提到】
: 之前处理也可以,也许更直接
: 目标 result*10+str[i]-'0'<=MAX_INT
: 1) result: 2) result=MAX_INT/10 && str[i]-'0'<=MAX_INT/10

l*****a
发帖数: 14598
7
什么问题?
think about last digit of 65534 , 65535 and 65538

【在 m******m 的大作中提到】
:
: str[i]-'0'<=MAX_INT%10 ?

m******m
发帖数: 19
8

我的意思是:不是 str[i]-'0'<=MAX_INT/10,应该是str[i]-'0'<=MAX_INT%10吧

【在 l*****a 的大作中提到】
: 之前处理也可以,也许更直接
: 目标 result*10+str[i]-'0'<=MAX_INT
: 1) result: 2) result=MAX_INT/10 && str[i]-'0'<=MAX_INT/10

l*****a
发帖数: 14598
9
oh,yes
u got it

【在 m******m 的大作中提到】
:
: 我的意思是:不是 str[i]-'0'<=MAX_INT/10,应该是str[i]-'0'<=MAX_INT%10吧

r****t
发帖数: 10904
10
overflow 不一定变负的。

【在 j*****u 的大作中提到】
: 在每次
: result = result * 10 + str[i] - '0';
: 之后check result < 0,如果overflow就会变负
: 如果C#的话用checked{ } wrap,或者complier打开/checked+,就会自动throw Ov
: erflowException()

1 (共1页)
进入JobHunting版参与讨论
相关主题
写了个atoi,大家帮看有没有哪里错了?大牛,过来讨论一下这道题
请教一个题: Median of Two Sorted Arrays问个越界的问题
如何判断是否会溢出onsite完,攒rp系列(二)
大家来看看判断三角形形状这个代码有没有问题,谢谢请问如何安全地reverse 一个integer
问一个atoi overflow的问题问个简单C reverse int
经典题atoi的溢出处理帮忙看看我写的atoi有没有bug, 谢谢
关于atoi的overflow弱弱的问一个问题
reverse an integer 怎么判断是否 overflow 来着函数atoi的实现
相关话题的讨论汇总
话题: int话题: max话题: overflow话题: str2int话题: result