Задача из книги Кернигана и Ритчи. Функции - C (СИ)
Формулировка задачи:
Здравствуйте, вот и появился повод зарегистрироваться здесь.
Собственно, вопрос возник по главе 1.7 (функции). В примере к этой главе описывается следующая программа:
Без прототипа функции (строка 3) gcc 4.2.1 компилирует эту программу, после чего она благополучно запускается, что мне не понятно.
В задании в конце этой главы требуется написать программу перевода температур с применением функций.
Если эту программу написать вот так:
то будет ошибка при компиляции:
error conflicting types for 'convert'
error previous implicit declaration of 'convert' was here
Если определение функции внести в самое начало или если объявить её, то ошибки не будет, что логично.
Скажите, чем отличается функция power из примера и та, что convert? Почему в случае функции power она работает даже без объявления и определённая в конце программы?
Спасибо
#include <stdio.h>
int power(int m, int n);
/* test power function */
main()
{
int i;
for (i = 0; i < 10; ++i)
printf("%d %d %d\n", i, power(2,i), power(-3,i));
return 0;
}
/* power: raise base to n-th power; n >= 0 */
int power(int base, int n)
{
int i, p;
p = 1;
for (i = 1; i <= n; ++i)
p = p * base;
return p;
}#include <stdio.h>
main()
{
float fahr, celsius;
int lower, upper, step;
lower = 0;
upper = 300;
step = 20;
fahr = lower;
printf("Table of translating F to C\n");
while (fahr <= upper) {
celsius = convert(fahr);
printf("%3.0f %6.1f\n", fahr, celsius);
fahr = fahr + step;
}
}
float convert(float F)
{
float C;
C = (5.0/9.0) * (F - 32.0);
return C;
}Решение задачи: «Задача из книги Кернигана и Ритчи. Функции»
textual
Листинг программы
int main