вспоминаем, как представляются числа...
VBAG, константы у тебя объявлены как целые числа (int), а они могут принимать значения только от -2147483648 до 2147483647. Если константа превышает указанный диапазон, то результат не определен.
#define D1 3000000000.0 #define I1 3000000000
void start() { double D2 = 3000000000.0; int I2 = 3000000000; Print("D1 = ", D1); Print("I1 = ", I1); Print("D2 = ", D2); Print("I2 = ", I2); }
Если переменной I2 присвоить недопустимое значение - результат аналогичный.
Виноват, был не прав, унесло!
Конечно же все работает. И все понятно и хорошо.
Всем спасибо.
Вопрос снят, пост можно удалять.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Использование подстановок define должно облегчать программисту жизнь. Но использовать их оказывается надо с оглядкой.
Обнаружил непонятное мне ограничение ПРЕПРОЦЕССОРА:
- при присваивании значения прямым образом проблем нет, а используя подстановку и при повышении разрядности числа свыше 9 define не работает!
2008.06.14 17:29:19 TEST_LIMIT_of_define EURUSD,M1: d = 10000000000.00000000
2008.06.14 17:29:19 TEST_LIMIT_of_define EURUSD,M1: c = 1000000000.00000000
2008.06.14 17:29:19 TEST_LIMIT_of_define EURUSD,M1: LG10 = 1410065408.00000000
2008.06.14 17:29:19 TEST_LIMIT_of_define EURUSD,M1: LG9 = 1000000000.00000000
Возможно есть еще какие-нибудь ограничения ПРЕПРОЦЕССОРА? Или ограничений быть не должно?