Задача из книги Кернигана и Ритчи. Функции - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, вот и появился повод зарегистрироваться здесь. Собственно, вопрос возник по главе 1.7 (функции). В примере к этой главе описывается следующая программа:
#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;
}
Без прототипа функции (строка 3) gcc 4.2.1 компилирует эту программу, после чего она благополучно запускается, что мне не понятно. В задании в конце этой главы требуется написать программу перевода температур с применением функций. Если эту программу написать вот так:
#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;
}
то будет ошибка при компиляции: error conflicting types for 'convert' error previous implicit declaration of 'convert' was here Если определение функции внести в самое начало или если объявить её, то ошибки не будет, что логично. Скажите, чем отличается функция power из примера и та, что convert? Почему в случае функции power она работает даже без объявления и определённая в конце программы? Спасибо

Решение задачи: «Задача из книги Кернигана и Ритчи. Функции»

textual
Листинг программы
int main

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы