c语言实现一个int型的数输入,我们怎样来判断这个数是否超过int所能表示最大范围??求高手!!!!

如题所述

将所输数字以字符型(或长整型)读取,通过字符串对比(或长整型数据的比较),来确定所读数据是否超出整型范围。若未超出,再将所读数据转化成整型值,赋给定义好的整型变量。追问

你说的我考虑过可是我觉得太麻烦。。如果有能够可以简单的就好了。。。谢谢

追答

回复 xnsimple:
"stdlib.h"内有字符串转数字函数strtol(,,),该函数返回值如下:未能转换则返回0;转换若正常则返回转换结果;转换若上溢出则
返回LONG_MAX;转换若下溢出则返回LONG_MIN。下面的子函数是一个例子:geint()读取键盘并返回有符号整数,返回值?同上。
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
int getint()
{
char stmp[13];//分配存储空间,10进制下13位就够了。
do{stmp[0]=getchar();}while(stmp[0]==32);//跳过空格,获取第一个字符。
fgets(stmp+1,12,stdin);//获取后续11个字符,剩余1位是字符串结束符。
return (int)strtol(stmp,NULL,10);//将字符串转换为有符号整数,并返回。
while(kbhit())getch();//清空键盘缓冲区。
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-01
using namespace std;

int fun(int n)
{
if(n%7==0)
return 1;
else
return 0;
}

void main()
{
int i;
cout<<"input a number:";
cin>>i;
if(fun(i))
cout<<"能被整除!"<<endl;
else
cout<<"不能被整除!"<<endl;
}
另外,虚机团上产品团购,超级便宜追问

你有试过嘛?不对的。

第2个回答  2011-03-29
long i = 0;
if(i > pow(2,sizeof(int)*8-1))
{
//越界
}追问

如果当输入的数 i 越界时这个数就会已经就会被溢出了,比如2字节的无符号数,最大65535,但是当超过后,如65536在机内表示就是0了的哦。。。。。所以你的算法是不对的。。还是谢谢你哈。。希望你能继续帮助我想想哈。。大家进步吧。。

第3个回答  2011-03-29
int i;
if(i>32767&&i<-32768)
return 1;
else return 0;追问

你的答案和 hong83210大同小异哈。。都不对。。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网