11. Операторы используемые в С++.
В С++ определен большой набор встроенных операторов, которые дают возможность вычисления разнообразных выражений.
К арифметическим операциям относятся операции:
сложения (+),
вычитания (–),
умножения (*),
деления (/)
деления по модулю (%) – вычисление остатка от деления.
В языке отсутствует операция возведения в степень.
В одном и том же выражении могут встретиться переменные и константы разных типов, в этом случае они преобразуются к старшему типу в соответствии с приоритетами типов, установленными в языке C: long double – double – float – unsigned long – long – unsigned int – int – unsigned char – char.
В этом перечислении наивысший приоритет имеет тип long double. Компилятор преобразует “меньший” тип в “больший”. Например, если в выражении операнды имеют типы long double,double,floatи т. д., то все они на время вычислений автоматически преобразуются к старшему типу. В данном случае это будет тип long double. Тип результата будет соответствовать старшему типу в выражении.
Отметим, что в соответствии с правилами выполнения вычислений в C при делении двух операндов целого типа результат также является целочисленным и формируется путем отбрасывания дробной части частного от деления: 4/7=0; 7/4=1.
Деление по модулю выполняется над операндами целого типа и результатом операции является остаток от деления: 7%4=3; 4%7=0.
Приоритеты арифметических операций:
- умножение, деление, деление по модулю;
- сложение, вычитание.
Операции одного уровня выполняются слева направо.
Помимо стандартных арифметических операций используются две дополнительных операции: инкремент (++) и декремент (– –). Результатом выполнения инкремента будет увеличение значения операнда на 1, результат декремента – уменьшение операнда на 1. Обе операции идентичны, поэтому рассмотрим на примере только операцию инкремента (увеличения).
Операция инкремента реализуется в двух видах:
++х;
x++;
аналогично декремент:
––х;
x––;
где х – идентификатор переменной.
Результатом операции является увеличение значения переменной хна 1, причем в первом случае х сначала увеличивается на 1, а затем используется в дальнейших операциях, а во втором – значение х сначала используется, а потом увеличивается на 1. Различие операций сказывается при использовании их в сложных выражениях. Например, определить значения x,t,z,y после вычисления выражений при х=1, t=1:
y=++x; z=t++;
Ответ: x=2; t=2; z=1; y=2.
Дополнительные арифметические операции используются, в основном, для организации счетчиков в циклах и имеют следующие ограничения:
- операции не следует использовать по отношению к переменным, которые встречаются в выражении более одного раза, т. е. не следует использовать выражение типа х*х++;
- операции инкремента и декремента можно применять только к переменным, а не к результату, т. е. выражение (х*y)++ неверное;
- операции не рекомендуется использовать в логических выражениях.
Данные операции имеют более высокий приоритет по сравнению с другими арифметическими операциями.
Операция присваивания определена в двух видах: простое и составное присваивание.
При простом присваивании, обозначаемом знаком (=), значение левого операнда заменяется значением правого операнда с соответствующим преобразованием типа правого операнда.
Структура оператора x=W,где х – переменная; W – выражение, например, x=2; y=k–8.
В приведенной структуре оператора W является выражением, поэтому оно может содержать и операции присваивания. Если в выражении присутствуют несколько операций присваивания, то они выполняются справа налево, например, x=y=z=6.8;
При составном присваивании используются следующие операции:
+=, –=, *=, /=, %=.
Формат операции составного присваивания: x OP W
где x – переменная, OP – операция, W – выражение.
В составном присваивании вначале выполняется операция над x и W, а затем результат присваивается переменной x.
Если порядок выполнения операций не определен круглыми скобками, то при этом высший приоритет имеют операции инкремента и декремента, а наименьший – присваивания.
Операторы отношений и логические операторы.
В С++ любое не нулевое число оцениваются как true, а нуль – как false.
Операторы отношений:
== равно
!= не равно
> больше
< меньше
>= больше и равно
<= меньше и равно
Логические операторы:
&& операция И
|| операция ИЛИ
! операция НЕ
Приоритет операторов отношений и логических операторов:
!, >, >=,<, <=,==, !=, &&, ||