Надеюсь, это очень простой вопрос.Ниже приводится Cgg (test.c), который у меня есть.
#include <stdio.h>
//#include <stdlib.h>
int main (int argc, char *argv[]) {
int intValue = atoi("1");
double doubleValue = atof("2");
fprintf(stdout,"The intValue is %d and the doubleValue is %g\n", intValue, doubleValue);
return 0;
}
Обратите внимание, что я использую atoi () и atof () из stdlib.h, но я не включаю этот заголовочный файл.Я компилирую pgm (gcc test.c) и не получаю ошибки компилятора!
Я запускаю pgm (./a.out), и здесь вывод, который является неправильным.
The intValue is 1 and the doubleValue is 0
Теперь я включаю stdlib.h (удаляя комментарии перед #include), перекомпилирую и снова запускаю.На этот раз я получаю правильный вывод:
The intValue is 1 and the doubleValue is 2
Как получилось, что компилятор не жаловался на то, что не включил stdlib.h, и все же позволил мне использовать функции atoi (), atof ()?1013 * Информация о моем gcc:
$ gcc --version
gcc (GCC) 4.1.2 20070925 (Red Hat 4.1.2-27)
Любые мысли приветствуются!