| 
| 
 | Вопрос # 6 297/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Вот такой вот вопрос. Есть код из Кернигана и Ричи.
 
 Я так понимаю base число, которое мы возводим в степень, а n степень в которое возводится, но я не понимаю как происходит операция умножения.
 Допустим первая степень 0.
 i=1; i<0 ++i, так как условие вхождение в цикл не выполняется, то и умножение не происходит, но почему тогда он безошибочно возвращает 1?
 А если i=1, то 1=1, то цикл работает, то 2*1=2. Тут вопросов нет.
 А если i=2, то 2=2, то 2*1=2, а должно ведь быть 4. Объясните, пожалуйста, что я недопонимаю в этом коде.
 Приложение:Переключить в обычный режим #include <stdio.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;}int power(int base, int n){int i,p; p=1;for(i=1; i<=n; ++i)	p=p*base;    return p;}
|  |   Вопрос задал: angel12013 (статус: Посетитель)Вопрос отправлен: 28 октября 2012, 15:44
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 5; последнее сообщение — 16 ноября 2012, 06:46; участников в обсуждении: 3. 
|   | Толяныч (статус: 4-ый класс), 28 октября 2012, 16:27 [#1]:А что тут может быть непонятного ? Число в нулевой степени = 1 по определению, цикл при этом не выполняется, а начальное присваивание производится до цикла. А в остальном -- результат, изначально равный 1, умножается на base n раз, что тоже соответствует определению целой степени. |  
|   | angel12013 (статус: Посетитель), 28 октября 2012, 16:35 [#2]:То есть если нужно произвести операцию умножения в p=p*base два раза, то результат умножения складывается и присваивается p? |  
|   | angel12013 (статус: Посетитель), 28 октября 2012, 16:41 [#3]:Да, все верно. Простите за глупый вопрос. Все встало на свои места. Если цикл работает два раза.
 1.p=1*2=2
 2.p=2*2=4
 Я просто новичок и голова пока в этом направлении слаба развита, но я наверстаю упущенное. Еще раз спасибо.
 |  
|   | Толяныч (статус: 4-ый класс), 29 октября 2012, 17:07 [#4]:Когда  нам  в  далеком 75-м препод начал читать Алгол-60, то написал на доске  а := а + 1 и сказал : "Имейте в виду, это не уравнение, потому что была бы бессмыслица  0 = 1,  а ОПЕРАТОР ПРИСВАИВАНИЯ. Выполняется полностью вычисление правой части и только  после этого результат присваивается переменной  в  левой  части"  .  До сих пор помню  Судя  по  вопросу, ТС еще не совсем тверд в понимании этого.  Поскольку это С, то старинное ( в т.ч. паскалевское ) :=  заменено обычным = , но суть от этого не поменялась. |  
|   | Ученый (статус: 8-ой класс), 16 ноября 2012, 06:46 [#5]:интересно только одно, а почему не использовать готовую функцию pow из , или еще не отпало ребяческое желание написать все самому?)) |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |