gpt4 book ai didi

c - 为什么函数 `strtoll` 给出错误值并将 errno 设置为 34?

转载 作者:行者123 更新时间:2023-12-04 00:01:20 26 4
gpt4 key购买 nike

这是我的 C 代码:

    char *ptr = "0xfff1342809062Cac";
char *pEnd;
long long value = strtoll(ptr, &pEnd, 0);
printf("%lld\n", value);
printf("errno: %d\n", errno);

我用gcc-8.3.0编译,输出为:

9223372036854775807
errno: 34

我很困惑 strtoll 给出了一个意外的值并将 errno 设置为 34。

最佳答案

这种行为是正确的。在您的系统上,long long 的最大值,即 LLONG_MAX9223372036854775807

您的字符串中的值大于此值;如果值超出范围且太大,则指定的行为是:返回 LLONG_MAX 并且 errno 设置为 ERANGE(大概是 34 在您的系统)。

也许考虑使用 strtoullunsigned long long 返回值,因为该字符串适合该数据类型。

关于c - 为什么函数 `strtoll` 给出错误值并将 errno 设置为 34?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60810722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com