- Неявное приведение типов
- Арифметические преобразования типов
- Явное приведение типов
Явное приведение типов
Для явного приведения типов в MQL5 поддерживается две формы записи: в стиле языка C и "функциональный". C-стиль имеет следующий синтаксис:
target t = (target)s; |
Здесь target — это имя целевого типа. В качестве источника данных s может выступать любое выражение. Если в нем выполняются какие-то операции, необходимо заключить выражение в скобки, чтобы приведение типа применялось ко всему выражению.
Альтернативный "функциональный" синтаксис выглядит так:
target t = target(s); |
Рассмотрим пару примеров.
double w = 100.0, v = 7.0;
|
Здесь результат деления двух вещественных чисел явно приводится к типу int. Тем самым программист подтверждает свое намерение отбросить дробную часть, и компилятор не будет выдавать предупреждений. Стоит отметить, что в MQL5 имеется группа функций для округления вещественных чисел различными способами (см. Математические функции).
Если наоборот требуется выполнить операцию над целыми числами с получением вещественного результата, нужно применить приведение типа к операндам (в самом выражении):
int x = 100, y = 7;
|
Приведения одного из операндов достаточно, чтобы остальные автоматически конвертировались в тот же тип.
При необходимости можно выполнять несколько приведений типа последовательно. Поскольку операция приведения типа обладает правой ассоциативностью, целевые типы будут применяться в порядке справа налево. В следующем примере мы преобразуем частное к типу float (это преобразование позволяет более компактно, с меньшим количеством знаков, отобразить значение), а затем к string. Без явного приведения к string, мы получили бы предупреждение компилятора "неявное преобразование числа в строку".
Print("Result:" + (string)(float)(w / v)); // Result:14.28571 |
Не используйте явное приведение типов только для того, чтобы подавить предупреждение компилятора. Если это не имеет под собой прикладного основания, вы тем самым маскируете потенциальную ошибку в программе.