Задача из книги Кернигана и Ритчи. Функции - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д