Redian新闻
>
在C里面怎么验证一个input数字是不是超过int的范围?
avatar
在C里面怎么验证一个input数字是不是超过int的范围?# Programming - 葵花宝典
g*p
1
写一个程序要求用户输入一个数字,存成int
如果int长度是32bit的话,怎么知道用户是不是输入了一个大于32bit范围的数字呢?
多谢!
avatar
b*a
2
cast成double,判断是否大于2**31-1或者小于-2**31?

【在 g****p 的大作中提到】
: 写一个程序要求用户输入一个数字,存成int
: 如果int长度是32bit的话,怎么知道用户是不是输入了一个大于32bit范围的数字呢?
: 多谢!

avatar
g*p
3
那如果比那还大怎么办?

【在 b******a 的大作中提到】
: cast成double,判断是否大于2**31-1或者小于-2**31?
avatar
k*f
4
那么大的数,自己数数位数不就知道了

【在 g****p 的大作中提到】
: 那如果比那还大怎么办?
avatar
g*p
5
不是我输入,控制不了啊

【在 k****f 的大作中提到】
: 那么大的数,自己数数位数不就知道了
avatar
b*a
6
如果不带指数输入的话, double的范围大约是+/–1.7E308(64bit),你想想能输入这
么多数字
吗?
int的话,如果不带指数输入的话,还有可以能超出范围,double的话基本上是不可能。
如果是带指数输入的话,检查指数的范围先。

【在 g****p 的大作中提到】
: 不是我输入,控制不了啊
avatar
k*f
7
你控制不了?你不是可以读取么?按照字符读入?还是其他方式?

【在 g****p 的大作中提到】
: 不是我输入,控制不了啊
avatar
s*u
8
no non(ah-hoc) method as far as I know

【在 g****p 的大作中提到】
: 写一个程序要求用户输入一个数字,存成int
: 如果int长度是32bit的话,怎么知道用户是不是输入了一个大于32bit范围的数字呢?
: 多谢!

avatar
P*e
9
input -> string
checking length ?
string -> int?

【在 g****p 的大作中提到】
: 写一个程序要求用户输入一个数字,存成int
: 如果int长度是32bit的话,怎么知道用户是不是输入了一个大于32bit范围的数字呢?
: 多谢!

avatar
b*a
10
2147483647和3147483647换成string,是不是一样的位数?
但是后面那个数已经超出32bit int的范围了.

【在 P********e 的大作中提到】
: input -> string
: checking length ?
: string -> int?

avatar
c*e
11
读进来, 自己转换, 超过2^32就停下来.
avatar
O*e
12
Then either use an eight-byte integer or reject the value and
request a new value or terminate program.

【在 g****p 的大作中提到】
: 那如果比那还大怎么办?
avatar
T*r
13
write your own atoi, period.
avatar
P*e
14
ft

到这里,就自己定义,自己的函数了
后面当然不可以用系统的atoi,或者其他什么的

【在 b******a 的大作中提到】
: 2147483647和3147483647换成string,是不是一样的位数?
: 但是后面那个数已经超出32bit int的范围了.

avatar
c*x
15
that is easy,
1. you convert the string to int,
2, you convert the int back to a string,
3, compare these two strings, if they are the same, then no overflow,
if they are not the same, then....
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。