【问题标题】:Checking overflow long long in C [closed]在 C 中检查溢出 long long [关闭]
【发布时间】:2017-03-06 22:20:53
【问题描述】:

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

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

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

【问题讨论】:

标签: c overflow long-long


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-04-06
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    相关资源
    最近更新 更多