首先,让我们回答您的问题:
#include <stdio.h>
#include <stdlib.h> // THIS IS WHAT YOU ARE MISSING
int main(void) {
char s[30] = { "115" };
long long t = atoll(s);
printf("Value is: %lld\n", t);
return 0;
}
然后,让我们讨论并回答“为什么?”:
为了与非常旧的 C 程序(C89 之前)兼容,使用没有首先声明的函数只会从 GCC 生成警告,而不是错误(正如这里的第一条评论所指出的,在 C89 中也允许隐式函数声明,因此生成错误是不合适的,这是只生成警告的另一个原因)。 但是假设这样一个函数的返回类型是(例如int
不是指定的类型),这就是程序意外执行但没有产生错误的原因。stdlib.h
atoll
如果你编译-Wall
你会看到:
警告:函数的隐式声明atoll
这个事实在人们使用atof
without include 时最令人震惊stdlib.h
,在这种情况下不会返回预期double
值。
注意:(作为对问题评论之一的回答atoll
)这就是如果不包含正确的标题,结果可能会被截断的原因。