2015-04-25 3 views
0

Я преподаю свой C с K & R этой книгой и запутался в функции питания из примера 1.7.C K & R 1.7 power function

Ну, когда я написал код точно из примера, приведенного в книге на Code :: Block и запустил его, произошла ошибка: неопределенная ссылка на «power».

Коды следующие:

#include <stdio.h> 
#include <stdlib.h> 

int power(int m, int n); 
main() 
{ 
    int i; 
    for (i = 0; i < 10; ++i) 
     printf("%d %d %d\n", i, power(2, i), power(-3, i)); 
    return 0; 
} 

Является ли функция питания предопределенная функция, предоставляемая библиотекой? Поскольку вышеприведенная программа не определила основную часть мощности

Если да, то почему я столкнулся с ошибкой? Включил ли я неправильную библиотеку?

+1

либо изменение '' power' к pow' (и удалить 'Int силу (Int м, Int N);' если вы собираетесь это сделать) или создать ваш o wn его в функции с именем 'power', которая принимает два' int 'и возвращает' int' –

+2

@steveluoxin. Я уверен, что где-то в книге есть определение силы или есть упражнение, требующее, чтобы вы сами пишете эту функцию. :) Посмотрите книгу более внимательно. –

+0

Подпись перед 'int power (int m, int n);' указала, что это определенная пользователем функция. – haccks

ответ

0

В стандартной библиотеке C нет ничего, что называется power(). Если вы хотите использовать функцию power(), вам необходимо написать свой собственный, прежде чем использовать его.

Если вы хотите библиотечную функцию, она называется pow(), определенной в математике библиотеки. Включите заголовочный файл math.h, без необходимости пересылать определение прототипа. Кроме того, не забудьте связать себя с математической библиотекой, используя -lm.

+0

. Я бы очень благодарна за комментарий до или после downvoting. –

+0

Спасибо, что напомнил @Sourav – steveluoxin

2

В сообщении об ошибке указано, что функция power не определена. Я уверен, что где-то в книге есть определение функции или есть упражнение, требующее, чтобы вы сами записывали эту функцию.

Это можно просто написать. Например, для положительного п функция может выглядеть

int power(int m, int n) 
{ 
    int result = 1; 

    for (; n; --n) result *= m; 

    return result; 
} 

Вы можете изменить функцию таким образом, что она будет принимать отрицательный п. :)

Примите во внимание, что было бы гораздо лучше, если функции был обратный тип long long int

Например

long long int power(int m, unsigned int n) 
{ 
    long long int result = 1; 

    for (; n; --n) result *= m; 

    return result; 
} 
+1

С уважением, сэр, не так ли делать домашнее задание и поощрять больше задавать такие вопросы в будущем? ИМХО, у нас до сих пор нет никаких доказательств реальных усилий со стороны ОП. –

+0

@Sourav Ghosh На самом деле это ваша или моя домашняя работа. :) Вы можете сделать это сами или просто проигнорировать это. :) Каждый решает сам. :) –

+0

Спасибо, что напомнил @ VladfromMoscow – steveluoxin