Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Понадобилось определять размер массива переменной, но выходит ошибка:
//---
//---
С константами (#define) и с числовым значением напрямую работает, а так нет. Почему?
Понадобилось определять размер массива переменной, но выходит ошибка:
//---
//---
С константами (#define) и с числовым значением напрямую работает, а так нет. Почему?
tol64:
Почему?
С константами (#define) и с числовым значением напрямую работает, а так нет. Почему?
Потому что при определении через #define компилятор просто заменяет встреченный макрос на нужную запись до компиляции. Поэтому он видит
что не противоречит языку MQL5.
ОК. Тогда я возьму на себя наглость. Итак, в описании функции Print() сказано, что "Данные типа double выводятся с точностью до 16 десятичных цифр после точки". На самом деле оказалось, что функция Print() выводит несколько округлённые данные:
MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.9999999999999716
Дело в том, что вещественное число хранится в памяти с не более чем 17 значащих цифр.
Попробуйте такой пример, чтобы почувствовать разницу:
Описание в справке поправим.с константами - статический массив, а с переменной - динамический. А размер динамического определяется с помощью ArrayResize
Вторая и последующие размерности имеют фиксированный размер. Задавать его можно только константой.
Потому что при определении через #define компилятор просто заменяет встреченный макрос на нужную запись до компиляции. Поэтому он видит
что не противоречит языку MQL5.
Спасибо. Подскажите, а что можно сделать, если размер массива и в первом и втором измерении определяется при вычислениях и не может быть константой? С помощью ArrayResize() ведь можно изменить размер только первого измерения. И почему изменить размер массива можно применяя значение переменной, а изначально установить нельзя?
Спасибо. Подскажите, а что можно сделать, если размер массива и в первом и втором измерении определяется при вычислениях и не может быть константой? С помощью ArrayResize() ведь можно изменить размер только первого измерения. И почему изменить размер массива можно применяя значение переменной, а изначально установить нельзя?