Русский

Учебник по MQL4  Операторы  Оператор присваивания

Оператор присваивания


Оператор присваивания - самый простой и наиболее распространённый оператор.

Формат оператора присваивания


Оператор присваивания представляет собой запись, содержащую символ = (знак равенства), слева от которого указано имя переменной, а справа - выражение. Оператор присваивания заканчивается знаком ; (точка с запятой).

  Переменная = Выражение;                          // Оператор присваивания

Оператор присваивания можно отличить в тексте программы по наличию знака равенства. В качестве выражения может быть указана константа, переменная, вызов функции или собственно выражение.

Правило исполнения оператора присваивания


Вычислить значение выражения справа от знака равенства и полученное значение присвоить переменной, указанной слева от знака равенства.

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

Примеры операторов присваивания


В операторе присваивания допускается объявление типа переменной слева от знака равенства:

   int In = 3;                // Переменной In присвоено значение константы
double Do = 2.0; // Переменной Do присвоено значение константы
bool Bo = true; // Переменной Bo присвоено значение константы
color Co = 0x008000; // Переменной Co присвоено значение константы
string St = "sss"; // Переменной St присвоено значение константы
datetime Da= D'01.01.2004';// Переменной Da присвоено значение константы

Ранее объявленные переменные используются в операторе присваивания без указания типа.

   In = 7;                   // Переменной In присвоено значение константы
Do = 23.5; // Переменной Do присвоено значение константы
Bo = 0; // Переменной Bo присвоено значение константы

В операторе присваивания не допускается объявление типа переменной в правой части от знака равенства:

   In = int In_2;            // Объявление типа переменных в правой части запрещено
Do = double Do_2; // Объявление типа переменных в правой части запрещено

В операторе присваивания не допускается повторное объявление типа переменных.

   int In;                   // Объявление типа переменной In
int In = In_2; // Не допускается повторное объявление переменной (In)

Примеры использования в правой части пользовательских и стандартных функций:

   In = My_Function();      // In присвоено значение пользоват. функции
Do = Gipo(Do1,Do1); // Do присвоено значение пользоват. функции
Bo = IsConnected(); // Bo присвоено значение стандартн. функции
St = ObjectName(0); // St присвоено значение стандартн. функции
Da = TimeCurrent(); // Da присвоено значение стандартн. функции

Примеры использования в правой части выражений:

   In = (My_Function()+In2)/2;        // Переменной In присвоено
// ..значение выражения
Do = MathAbs(Do1+Gipo(Do2,5)+2.5); // Переменной Do присвоено
// ..значение выражения

При вычислениях в операторе присваивания применяются правила приведения типов данных (см. Приведение типов).

Примеры операторов присваивания краткой формы


В MQL4 используется также краткая форма записи операторов присваивания. Это - форма операторов присваивания, в которой используются операции присвоения, отличные от операции присвоения = (знак равенства) (см. Операции и выражения). На операторы краткой формы распространяются те же правила и ограничения. Краткая форма операторов присваивания используется в коде для наглядности. Программист по своему усмотрению может использовать ту или иную форму оператора присваивания. Любой оператор присваивания краткой формы может быть легко переписан в полноформатный, при этом результат исполнения оператора не изменится.

   In /= 33;              // Краткая форма записи оператора присваивания
In = In/33; // Полная форма записи оператора присваивания

St += "_exp7"; // Краткая форма записи оператора присваивания
St = St + "_exp7"; // Полная форма записи оператора присваивания