@Giorgi: Нет. Если функция соответствует предположениям, которые делает компилятор, это нормально. Просто когда есть несоответствие (например, с atof), вы получаете неопределенное поведение.

сь, это очень простой вопрос. Ниже приводится 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 ()?

Моя информация о gcc:

$ gcc --version
gcc (GCC) 4.1.2 20070925 (Red Hat 4.1.2-27)

Любые мысли приветствуются!

Ответы на вопрос(5)

Ваш ответ на вопрос