在C里面怎么验证一个input数字是不是超过int的范围?# Programming - 葵花宝典g*p2007-11-10 08:111 楼写一个程序要求用户输入一个数字,存成int如果int长度是32bit的话,怎么知道用户是不是输入了一个大于32bit范围的数字呢?多谢!
b*a2007-11-10 08:112 楼cast成double,判断是否大于2**31-1或者小于-2**31?【在 g****p 的大作中提到】: 写一个程序要求用户输入一个数字,存成int: 如果int长度是32bit的话,怎么知道用户是不是输入了一个大于32bit范围的数字呢?: 多谢!
b*a2007-11-10 08:116 楼如果不带指数输入的话, double的范围大约是+/–1.7E308(64bit),你想想能输入这么多数字吗?int的话,如果不带指数输入的话,还有可以能超出范围,double的话基本上是不可能。如果是带指数输入的话,检查指数的范围先。【在 g****p 的大作中提到】: 不是我输入,控制不了啊
s*u2007-11-10 08:118 楼no non(ah-hoc) method as far as I know【在 g****p 的大作中提到】: 写一个程序要求用户输入一个数字,存成int: 如果int长度是32bit的话,怎么知道用户是不是输入了一个大于32bit范围的数字呢?: 多谢!
P*e2007-11-10 08:119 楼input -> stringchecking length ?string -> int?【在 g****p 的大作中提到】: 写一个程序要求用户输入一个数字,存成int: 如果int长度是32bit的话,怎么知道用户是不是输入了一个大于32bit范围的数字呢?: 多谢!
b*a2007-11-10 08:1110 楼2147483647和3147483647换成string,是不是一样的位数?但是后面那个数已经超出32bit int的范围了.【在 P********e 的大作中提到】: input -> string: checking length ?: string -> int?
O*e2007-11-10 08:1112 楼Then either use an eight-byte integer or reject the value andrequest a new value or terminate program.【在 g****p 的大作中提到】: 那如果比那还大怎么办?
P*e2007-11-10 08:1114 楼ft到这里,就自己定义,自己的函数了后面当然不可以用系统的atoi,或者其他什么的【在 b******a 的大作中提到】: 2147483647和3147483647换成string,是不是一样的位数?: 但是后面那个数已经超出32bit int的范围了.
c*x2007-11-10 08:1115 楼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....