如果输入将被截断,如何测试比较?

How to test comparison if input will be truncated?

所以我将一些东西转换为 int,据我所知,int 的最大值是 32676,超过这个值的任何值都将在 C 中被截断。

如果我的程序有用户输入数据,我如何检查这个数据是否可以完全存储在一个 int 中,因为如果不能,我需要告诉用户重新输入数据。

例如,如果用户试图输入 450000,我需要告诉他们重新输入数据,但是,一个简单的比较似乎先截断值再与 INT_MAX 比较?

我建议将数据存储在允许更大值的类型中,例如 longdouble,具体取决于您输入的数据,然后在转换前检查 INT_MAX下来。

可以找到类型限制的完整列表 here

更好的方法如下

将数字扫描为字符串,然后将INT_MAX转换为字符串。为此使用 itoa()

进行字符串比较,然后相应地打印一条消息。将它存储在任何 int 或 float 或任何东西中都不会有问题。

编辑:添加了一个工作代码

#include<stdio.h>
#include <string.h>
int main(){
char lhs[200];
printf("enter the number");
scanf("%s",lhs); 
char rhs[200];
sprintf(rhs, "%d", 2147483647);
int rc = strcmp(lhs, rhs);
if(rc == 0)
    printf("[%s] equals [%s]\n", lhs, rhs);
else if(rc < 0)
    printf("[%s] more than [%s]\n", lhs, rhs);
else if(rc > 0)
    printf("[%s] less than [%s]\n", lhs, rhs);
return 0 ;
}