Что такое операции и выражения?
На самом деле Вы прекрасно знаете, что такое операции. Если я Вам скажу, что +,-,*,/ - элементарные арифметические операции, Вы очень быстро вспомните, что означает слово "операция".
Я уже слышу, как Вы говорите: "О! Так я же знаю, что такое операции, расскажи, что же такое тогда выражения?"
Идентификаторы (Вы их ещё помните? Если нет, то гляньте в урок СИНТАКСИС) совместно с Операциями образуют Выражения.
Запутались? Рассмотрим это на примере:
Код:
x = (y*z)/w
x,y,z и w - идентификаторы.
=,* и / - операции.
А вся строчка - это выражение.
Если в конце выражения поставить символ ";", то оно превращается в оператор:
Код:
x = (y*z)/w;
Комбинации выражений формируют оператор.
Комбинации операторов формируют функцию.
Комбнации функций формируют программу.
В оставшейся части урока мы будем говорить про типы операций в MQL4.
Начнём с элементарных математических операций:
1 - Арифметические операции
В MQL4 существует 9 арифметических операций:

Замечание: Нельзя комбинировать операция инкремента и декремента с другими выражениями.
Например, следующая строчка некорректна:
Код:
A=(B++)*5;
Код:
A++;
B=A*5;
2 - Операции присваивания
Смысл любого выражения в формировании результата, а затем присваивания этого результата левому операнду.
Например:
Код:
A = B * C;
В MQL4 существует 11 операций присваивания:

3 - Операции сравнения
Операции сравнения сравнивают два значения (два операнда) и возвращают либо True, либо False.
Это как ответить на вопрос "Вася выше Саши ? Да/Нет ?"
Например:
Код:
4 == 4; //true
4 < 4; //false
4 <= 4 //true;

4 - Логические операции
Логические операторы заимствованы из Булевой алгебры, которая суть манипулирование верностью концептуальных абстрактных высказываний, не вдаваясь в истинный смысл концепций. Значние верности в Булевой алгебре может принимать лишь два значения: верно или неверно (true OR false).
В MQL4 логические операции также называются Булевыми операциями.
В MQL4 используются три основных логических операции:

Замечание: Логические операции выполняются слева направо. Поэтому, если в операторе A && B; левый операнд равен нулю, то правый операнд даже не рассматривается. Аналогично, если в операторе A || B; левый оператор не равен нулю, то правый операнд даже не рассматривается.
5 - Битовые операции
Битовые (или побитовые) операции очень похожи на логические операции, но они работают на более низком уровне - бинарном уровне представления данных.
В MQL4 доступны следующие битовые операции:

Замечание: Оба операнда, учавствующих в побитовых операциях, должны быть типа int.
6 - Другие операции
Есть несколько операций в MQL4, которые не входят ни в одну из предыдущих категорий:
- Операция индексирования массива []
- Операция вызова функции ()
- Операция разделения аргументов функций , (запятая)
Приоритеты операций. Моё любимое ;)
Если у Вас есть оператор, состоящий из нескольких выражений, и Вы явно не указываете, в каком порядке Вы хотите их выполнения, то порядок выполнения определяется исходя из приоритетов операций, входящих в оператор. Операции с более высоким приоритетом выполняются первыми. Например, все мы из школы знаем, что операция деления имеет более высокий приоритет, чем операция сложения. Поэтому, следующие два выражения эквивалентны:
Код:
x + y / 100
x + (y / 100) //недвусмысленно, рекомендую писать так
Используя составные операторы необходимо быть точным и указывать порядок выполнения операций явно с помощью скобок (). Такая практика сделает Ваш код более лёгким для прочтения и редактирования. *
Далее следует список операций. Чем выше операция в списке, тем выше её приоритет. Операции с более высоки приоритетом выполняются раньше операций с более низким приоритетом. Если выбор стоит между двумя одинаковыми операциями, то следует помнить, что все бинарные операции (те, в которых учавствуют два операнда) выполняются слева направо, а все операции присваивания - наоборот - справа налево.
Оставляю список на английском. Заодно будете знать, как называются операции на 'родном' языке ;)
() Function call From left to right
[] Array element selection
! Negation From left to right
~ Bitwise negation
- Sign changing operation
* Multiplication From left to right
/ Division
% Module division
+ Addition From left to right
- Subtraction
<< Left shift From left to right
>> Right shift
< Less than From left to right
<= Less than or equals
> Greater than
>= Greater than or equals
== Equals From left to right
!= Not equal
& Bitwise AND operation From left to right
^ Bitwise exclusive OR From left to right
&& Logical AND From left to right
|| Logical OR From left to right
= Assignment From right to left
+= Assignment addition
-= Assignment subtraction
*= Assignment multiplication
/= Assignment division
%= Assignment module
>>= Assignment right shift
<<= Assignment left shift
&= Assignment bitwise AND
|= Assignment bitwise OR
^= Assignment exclusive OR
, Comma From left to right
* А теперь немного развлечения.
Обожаю приоритеты, потому что их почти никто никога наизусть не помнит. Достаточно выучить парочку и ты уже царь среди равных тебе программистов.
Например, можно спросить результат такого оператора ++ i ++; (но это уже больше к C/C++, где есть правый и левый инкремент). Или такого: i +++ i;
А вообще, приоритеты - один из хороших козырей в IOCCC - International Obfuscated C Code Contest — «международный конкурс запутанного кода на Си».
http://en.wikipedia.org/wiki/International..._C_Code_Contest - на это стоит посмотреть. Всегда улыбаюсь