gpt4 book ai didi

c - strtoull 和 long long 算术

转载 作者:行者123 更新时间:2023-11-30 17:02:57 26 4
gpt4 key购买 nike

谁能解释一下这个程序的输出以及如何修复它?

unsigned long long ns = strtoull("123110724001300", (char **)NULL, 10);
fprintf(stderr, "%llu\n", ns);

// 18446744073490980372

最佳答案

你有<stdlib.h>吗?包括在内?

如果我省略<stdlib.h>,我可以在MacOS X上重现.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
unsigned long long ns = strtoll("123110724001300", (char **)NULL, 10);
printf("%llu\n", ns);
return(0);
}

省略标题,我得到你的结果。包括标题,我得到了正确的答案。

32 位和 64 位均可编译。

<小时/>

如注释中所述,如果没有声明 strtoll(),编译器会将其视为返回 int 的函数。

要了解更多情况,请查看十六进制输出:

     123110724001300    0x00006FF7_F2F8DE14    Correct
18446744073490980372 0xFFFFFFFF_F2F8DE14 Incorrect

手动插入下划线...

关于c - strtoull 和 long long 算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36335180/

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