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.");
常见错误
如果您想检验一个数字是否溢出,那个程序是不行的.#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;}