C++ Программирование в среде С++ Builder 5

         

Операции и выражения


Как все знают, из переменных, функций и констант в алгебре можно составлять формулы. Точно так же и в языке C++ следующим уровнем представления данных после одиночных переменных и констант являются своего рода формулы, называемые выражениями.

Единственное отличие выражений C++ от конвенциональных формул заключается в том, что набор операций, соединяющих члены выражения, отличается от применяемого, скажем, в алгебре. Вот один пример выражения:

aResult = (first - second * RATE) <<3

Операции характеризуются своим приоритетом, определяющим порядок, в котором производится оценка выражения, и правилом ассоциации, задающим направление последовательных оценок идущих друг за другом операций одного приоритета.

Как и в обычных формулах, для изменения порядка оценки выражения могут применяться круглые скобки (кстати, в приведенном выражении они излишни и введены только для наглядности). Знак равенства здесь также является операцией присваивания, которая сама (и, соответственно, все выражение в целом) возвращает значение. В этом отличие С от других языков, в частности Pascal, где присваивание является оператором а не операцией. Оператором выражение станет, если поставить после него точку с запятой.

В следующей таблице дана сводка всех операций языка С в порядке убывания приоритета.

Таблица 3.3. Операции языка С



Операция

Описание

Приоритет

Ассоциация

Первичные и постфиксные операции

[] индексация массива 16 слева направо
() вызов функции 16 слева направо
. элемент структуры 16 слева направо
-> элемент указателя 16 слева направо
++ постфиксный инкремент 15 слева направо
-- постфиксный декремент 15 слева направо

Одноместные операции

++ префиксный инкремент 14 справа налево
-- префиксный декремент 14 справа налево
sizeof размер в байтах 14 справа налево
(тип) приведение типа 14 справа налево
~ поразрядное NOT 14 справа налево
! логическое NOT 14 справа налево
- унарный минус 14 справа налево
& взятие адреса 14 справа налево
* разыменование указателя 14 справа налево

Двухместные и трехместные операции

Мультипликативные

* умножение 13 слева направо
/ деление 13 слева направо
% взятие по модулю 13 слева направо

Аддитивные

+ сложение 12 слева направо
- вычитание 12 слева направо

Поразрядного сдвига

<< сдвиг влево 11 слева направо
>> сдвиг вправо 11 слева направо

Отношения

< меньше 10 слева направо
<= меньше или равно 10 слева направо
> больше 10 слева направо
>= больше или равно 10 слева направо
== равно 9 слева направо
<
Операция

Описание



Приоритет



Ассоциация

! = не равно 9 слева направо


Поразрядные

& поразрядное AND 8 слева направо
^ поразрядное XOR 7 слева направо
| поразрядное OR 6 слева направо


Логические

&& логическое AND 5 слева направо
|| логическое OR 4 слева направо


Условные

? : условная операция 3 справа налево


Присваивания

= присваивание 2 справа налево
*= присвоение произведения 2 справа налево
/= присвоение частного 2 справа налево
%= присвоение модуля 2 справа налево
+= присвоение суммы 2 справа налево
-= присвоение разности 2 справа налево
<<= присвоение левого сдвига 2 справа налево
>>= присвоение правого сдвига 2 справа налево
&= присвоение AND 2 справа налево
^= присвоение XOR 2 справа налево
|= присвоение OR 2 справа налево
, запятая 1 слева направо

Содержание раздела