|
#include <stdio.h> int main() { short int a; scanf("%d",&a); /*a 的最大值是32767,但如果我输入大于32767的数则会超值,如何检查这个错误*/ return 0; } |
|
|
|
学习中
|
|
|
无法直接检测,因为a无法得之这一信息。一般的确需要判断的话,作法是定义一个更宽型的数据,判断确认没有溢出之后再做类型转换。
long ca; short int a; scanf("%d", &ca); if (ca < 32768 && ca >= -32767) a = (short int)ca; else ... // show error message |
|
|
如果两个数输入均正确,但运算后溢出怎么办?能否从汇编角度查看寄存器?
|
|
|
运算溢出可以直接判断的:
例如: 假设a,b是正数(int类型) a+b=c //若溢出则c<0 其它情况都有类似的方法可以判断,不用查看寄存器的 |
|
|
楼上说得对了,赞同中
|
|
|
如果在text控件中输入数据则会有数据检查请教这是如何实现的?
|
|
|
if (a<0 &&a>=-32768)
exit(puts("Error!")); |
|
|
应该是:
while (a<-32768 || a>32767) { printf("The value range is -32768 to 32767\n"); scanf("%d",&a); } |
|