14.01.2013, 12:12
|
|
Гражданин KAZUS.RU
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
|
Re: Как задефайнить число в степени?
Сообщение от Boba_spb
|
Мда .... Задача ...
И как токо в одном файле для разных платформ пишут программы ...
Не пробовали что нить типа #ifdef, #ifndef попользовать ?
Причем только в одном файле, и его использовать во множестве других?
|
Вы не поняли, степень в разных версиях программы меняется и соответственно должны меняться константы b,c
Пока вижу решение в лоб.
#if a=3
#define c 100
#else a=4
#define c 1000
и.т.д.
#endif
__________________
Не ошибается лишь тот, кто ни чего не делает!
|
|
|
|
14.01.2013, 12:19
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Как задефайнить число в степени?
Сообщение от Hives
|
realid компилер и сам увидит что выражение константное и подставит что надо
|
А если там степень 20, это что ж писать 5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5? Уродство какое-то.
Последний раз редактировалось realid; 14.01.2013 в 13:10.
|
|
|
|
14.01.2013, 12:32
|
|
Частый гость
Регистрация: 04.06.2009
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как задефайнить число в степени?
Я бы переписал в нормальную функцию.
Дирректива define - это определение макроса, то есть все, что в ней описано - копируется в код. Чем сложнее макрос и чем чаще он используется, тем больше объем исполняемого файла.
Предполагаю, что в первом варианте автор допустил ошибку(причина - ...), но это совсем НЕ значит, что эту ошибку следует поддерживать и далее.
|
|
|
|
14.01.2013, 13:24
|
|
Прохожий
Регистрация: 14.01.2013
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как задефайнить число в степени?
Есть библиотека BOOST, там все это уже сделано за вас:
пример вызова:
Код:
|
#include ‹boost/math/special_functions/pow.hpp›
#define BASE 5
#define POWER 5
#define RESULT pow‹POWER›(BASE)
double result = RESULT; |
НО! Использовать таким образом препроцессор довольно не рационально. Да и тащить весь буст ради одного вызова тоже глупо.
Вы можете просто написать
Код:
|
#include ‹math.h›
#define BASE 5
#define POWER 5
const double poweredNumber = pow(BASE, POWER); |
Далее использовать эту константу. Компилятор увидит, что это константа и вычислит её значение на стадии компиляции, что вам и требуется.
|
|
|
|
14.01.2013, 13:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Как задефайнить число в степени?
Сообщение от realid
|
А если там степень 20, это что ж писать 5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5? Уродство какое-то.
|
Ну уж что так строго - а полет фантазии где.
#define a_ 5*5*5*5*5;
#define a a_*a_*a_*a_;
|
|
|
|
14.01.2013, 13:31
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Как задефайнить число в степени?
Сообщение от woroba
|
#define a 5
#define b (надо 5 в степени a)
#define c (надо 10 в степени a)
|
А так не пробовали?
Код:
|
#define a 5
#define b 5^a
#define c 10^a |
|
|
|
|
14.01.2013, 13:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Как задефайнить число в степени?
Сообщение от Aleksey_M
|
Код:
#include ‹math.h›
#define BASE 5
#define POWER 5
const double poweredNumber = pow(BASE, POWER);
|
Вот это очень интересно !! Как он в const запишет результат pow() !!!
|
|
|
|
14.01.2013, 13:39
|
|
Частый гость
Регистрация: 02.02.2010
Адрес: Одесская обл.
Сообщений: 32
Сказал спасибо: 0
Сказали Спасибо 24 раз(а) в 12 сообщении(ях)
|
Re: Как задефайнить число в степени?
Сообщение от Yurkin2007
|
А так не пробовали?
Код:
|
#define a 5
#define b 5^a
#define c 10^a |
|
Речь шла о компиляторе IAR а не о бейсике.
Почему Вы не хотите воспользоваться вариантом, указанным в документации?
Код:
|
#define A 5
#define B 10E7
#define C A*B // A*10E7 == 5E7 == 50000000 |
|
|
|
|
14.01.2013, 13:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,801
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
|
Re: Как задефайнить число в степени?
Сообщение от woroba
|
#if a=3
#define c 100
#else a=4
#define c 1000
и.т.д.
#endif
|
не
#else a=4
а
#elseif a==4
скорее всего.
И не
#if a=3
а
#if a==3
Где то так.
Последний раз редактировалось andries5; 14.01.2013 в 13:42.
|
|
|
|
14.01.2013, 14:03
|
|
Прохожий
Регистрация: 14.01.2013
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как задефайнить число в степени?
Сообщение от Boba_spb
|
Вот это очень интересно !! Как он в const запишет результат pow() !!!
|
Если интересно - проверьте. Возьмет и запишет. Но константа потому и константа , что запишет всего один раз.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:34.
|
|