Приведение типов

 Речь пойдёт не о тех типах, которых приводят в отделение то ли милиции, то ли полиции и оставляют в обезъяннике, с этими как раз всё ясно.)))))))
Имеются в виду типы данных в MQL. Что это за типы, зачем их приводить и куда??? Этот вопрос мы и попробуем прояснить.
Возьмём простой пример:


int start()
{
int a,b=5,c=10;
a=b/c;
comment(a);
return(0);
}

Компилируем, запускаем....и получаем результат-дырку от бублика...то есть ноль. Но ведь пример простейший и ответ мы знаем. должно получиться 0,5.
Посмотрим другой пример:

int start()
{
double a=1.2544;
int b;
b=a;
comment(b);
return(0);
}

Теперь результат единица. Но ведь никаких математических действий в этом примере вообще не было. Мы просто присвоили переменной b значение переменной а. Почему так происходит? С математической точки зрения это полный бред. Ясно что в первом примере должно получиться 0.5 а во втором 1.2544.Между тем по логике языка MQL всё абсолютно верно. Переменная в которой мы сохраняем результат и в первом и во втором случае объявлена как integer, ( int ). то есть целое число. Соответственно дробную часть числа компилятору деть некуда и он её просто отбрасывает. Если быть более точным это не совсем так, перед операцией присвоения, (не путать с присвоением чужого имущества, это всё таки статья ,не помню какая УК РФ))))))), происходит преобразование данных в целевой тип. В нашем случае целевой тип int, соответственно значение преобразовывается в целое число. Такое преобразование и называется приведением типов.

Посмотрим ещё один пример:

int start()
{
int a=5;
double b=10.0;
Comment(a/b);
return(0);
}

В этом случае мы получаем правильный ответ- 0.5 хотя опять у нас переменные разных типов. Всё дело в том что в этом примере нет операции присваивания, мы видим только операцию деления. В таком случае данные приводятся к типу, имеющему наибольший приоритет. Тип double имеет более высокий приоритет чем int (типа крутой))))) поэтому выражение приводится к типу double.

Более подробно о приведении типов смотрите в учебнике MQL. Вообще то данный раздел сайта не предназначен заменить собой учебник. Я просто пытаюсь, насколько это возможно (и насколько это у меня получается))))) более доступно изложить материал учебника, точнее те моменты, которые мне кажутся наиболее важными.. Поэтому хоть это дело нудное и долгое , но если хотите научиться программировать, без изучения учебника не обойтись.

Пожалуй на этом первую вводную часть можно и закончить. Как я уже писал по мере необходимости мы будем периодически возвращаться к материалам раздела. Может быть на данном этапе не всё понятно, в этом нет ничего страшного, москва тоже не сразу строилась)))))))
Пока оставим в стороне нудную теорию и во второй части перейдём непосредственно к изучению операторов языка.

 

 

 Назад

 

 

TEXT.RU - 100.00%

 

 

Комментарии (0)

Нет комментариев. Ваш будет первым!

 

Яндекс.Метрика