在C中检查溢出很长时间

时间:2017-03-06 22:20:54

标签: c overflow long-long

我想检查fgets中的变量是否在C语言中溢出ling long int。 我试过这个:

long long x; 
fgets(...)
...
if(x <= LLONG_MAX && x >= LLONG_MIN)

但它不起作用,因为long long int会收到过多的数字;它 回到LLONG_MIN +过剩(我想是这样)。

1 个答案:

答案 0 :(得分:3)

当您尝试将char *转换为long long时,请使用strtoll。这些行来自strtoll文档(strtoll):

  

strtol()函数返回转换结果,除非该值会下溢或溢出。如果发生下溢,strtol()将返回LONG_MIN。如果发生溢出,strtol()将返回LONG_MAX。在这两种情况下,errno都设置为ERANGE。对于strtoll()(LLONG_MIN和LLONG_MAX而不是LONG_MIN和LONG_MAX)也是如此。

相关问题