请大家帮我看看这个数据输入程序

blossom007cn 2004-08-11 07:09:12
我写了这样一个简单的C程序,请教如何判断数据超值输入?

#include <stdio.h>

int main()
{
short int a;

scanf("%d",&a);
/*a 的最大值是32767,但如果我输入大于32767的数则会超值,如何检查这个错误*/
return 0;
}
...全文
90 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
12l 2004-08-14
  • 打赏
  • 举报
回复
应该是:
while (a<-32768 || a>32767) {
printf("The value range is -32768 to 32767\n");
scanf("%d",&a);
}
mainvhaide 2004-08-13
  • 打赏
  • 举报
回复
if (a<0 &&a>=-32768)
exit(puts("Error!"));
blossom007cn 2004-08-12
  • 打赏
  • 举报
回复
如果两个数输入均正确,但运算后溢出怎么办?能否从汇编角度查看寄存器?
blossom007cn 2004-08-12
  • 打赏
  • 举报
回复
如果在text控件中输入数据则会有数据检查请教这是如何实现的?
tangfulin 2004-08-12
  • 打赏
  • 举报
回复
楼上说得对了,赞同中
FlyindanceDDr 2004-08-12
  • 打赏
  • 举报
回复
运算溢出可以直接判断的:

例如:

假设a,b是正数(int类型)

a+b=c //若溢出则c<0

其它情况都有类似的方法可以判断,不用查看寄存器的
Kusk 2004-08-11
  • 打赏
  • 举报
回复
无法直接检测,因为a无法得之这一信息。一般的确需要判断的话,作法是定义一个更宽型的数据,判断确认没有溢出之后再做类型转换。

long ca;
short int a;
scanf("%d", &ca);
if (ca < 32768 && ca >= -32767)
a = (short int)ca;
else
... // show error message
waini12 2004-08-11
  • 打赏
  • 举报
回复
学习中

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧