use*_*033 2 c string long-integer
任何人都可以解释这个程序的输出以及我如何解决它?
unsigned long long ns = strtoull("123110724001300", (char **)NULL, 10);
fprintf(stderr, "%llu\n", ns);
// 18446744073490980372
Run Code Online (Sandbox Code Playgroud)
Jon*_*ler 11
你有<stdlib.h>包括吗?
如果省略,我可以在MacOS X上重现<stdlib.h>.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
unsigned long long ns = strtoll("123110724001300", (char **)NULL, 10);
printf("%llu\n", ns);
return(0);
}
Run Code Online (Sandbox Code Playgroud)
省略标题,我得到你的结果.包括标题,我得到正确的答案.
32位和64位编译.
如注释中所述,在没有strtoll()声明的情况下,编译器将其视为返回int的函数.
要查看更多内容,请查看十六进制输出:
123110724001300 0x00006FF7_F2F8DE14 Correct
18446744073490980372 0xFFFFFFFF_F2F8DE14 Incorrect
Run Code Online (Sandbox Code Playgroud)
手动插入下划线......