Унарные, бинарные, тернарные.
Все операции в С++ имеют определенный приоритет и порядок выполнения. В таблице все операции разбиты на группы. В рамках группы приоритеты одинаковы. Чем выше приоритет группы операций, тем выше она расположена в таблице.
порядок выполнения: Слева на право
операция |
выполняемые действия |
( ) |
вызов функции |
[ ] |
выделение элемента массива |
. |
выделение элемента класса, структуры или объединения |
-> |
выделение элемента класса (структуры, объединения) адресуемого указателем |
:: |
определение области доступа |
операция |
выполняемые действия |
$ |
определение адреса |
* |
обращение по адресу |
sizeof |
определение размера |
new |
динамическое выделение памяти |
delete |
освобождение выделенной памяти |
- |
изменение знака (унарный минус) |
! |
логическое отрицание |
~ |
побитовое отрицание |
+ |
унарный плюс |
(ТИП) |
преобразование типа |
++ |
увеличение на единицу (инкремент) |
-- |
уменьшение на единицу |
* |
прямое обращение к компоненту класса |
->* |
косвенное обращение к компоненту класса |
* |
умножение |
/ |
деление |
% |
остаток от деления |
операция |
выполняемые действия |
+ |
сложение |
- |
вычитание |
<< |
сдвиг влево |
>> |
сдвиг вправо |
< |
меньше |
<= |
меньше или равно |
> |
больше |
>= |
больше или равно |
== |
равно |
!= |
не равно |
& |
побитовая операция И |
^ |
побитовая операция исключающее ИЛИ |
| |
побитовая операция ИЛИ |
&& |
логическая операция И |
|| |
логическая операция ИЛИ |
операция |
выполняемые действия |
?: |
условная операция |
= |
операция присвоения |
*=, /=, %= |
-//- |
+=, -= |
-//- |
<<=, >>= |
-//- |
&=, |=, ^= |
-//- |
Пример :
a++;
++a;
int a=10;
1) int b=20+--a; (b=29)
2) int b=20+a--; (b=30)
3) b=0; b+=a--; (b=30, a=9)
SIZE of ( int ); (определение размера)=4
short a
size of(a)>2
int * a = NEW int [10]; /*Динамическое выделение памяти. Указателю а присваивается адрес выделенной динамической памяти из десяти элементов целого типа*/
delete a ; /*удаление для предыдущей операции*/
a *=2; - a умножается на два
( a = a *2 - то же самое)
int c = a > b ? 10:20; /*если условие выполняется, то с=10, если нет - с=20*/
a = b = c =10; /*множественное присваивание*/
Struct S1
{
int el1;
struct S1*pS1;
}
elem ;
elem . pS 1=& elem ; //элементу структуры присваивается адрес elem
elem . pS 1-> el 1=10; //присваивание el 1=10 через указатель