[求助]为什么这个条件不执行?
int shi;
scanf("%d",shi);
if (shi>32767)
printf("error.");
为什么当我输入32768时这个条件不执行,
是不是因为32768属于long型,给shi负值时要临时转化成int型 ,
所以shi=-1 了,这样对吗?
[此贴子已经被作者于2006-9-3 9:13:57编辑过]
int shi;
scanf("%d",shi);
if (shi>32767)
printf("error.");
为什么当我输入32768时这个条件不执行,
是不是因为32768属于long型,给shi负值时要临时转化成int型 ,
所以shi=-1 了,这样对吗?
[此贴子已经被作者于2006-9-3 9:13:57编辑过]
2006-09-03 09:12
2006-09-03 09:15
int shi;
scanf("%d",&shi);
if (shi>32767)
printf("error.");
常见错误
2006-09-03 09:16
2006-09-03 09:18
2006-09-03 10:49
如果您想检验一个数字是否溢出,那个程序是不行的.
#include "Stdio.h"
#include "stdlib.h"
#include "values.h"
int main(void)
{
char str[20];
int num;
gets(str);
if(atol(str)>MAXINT)
printf("error");
else
{
num=atoi(str);
printf("%d",num);
}
return 0;
}

2006-09-03 10:55

2006-09-03 13:56