25 февраля 2006 г.

Приоритеты операций в Си

Давно искал нечто подобное, чтобы можно было повесить на стенку и пользоваться каждый день. По правде сказать, самому такую табличку сделать было лень. Все-таки, нашелся какой-то добрый человек и сделал эту таблицу, за что спасибо ему огромное. К сожалению, не знаю имени автора, ибо таблица попала ко мне в бумажном варианте. С удовольствием поставлю ссылку на автора, если таковой отыщется.

Операции с одинаковым приоритетом выполняются слева направо в порядке следования.

ПриоритетОператорОписание
1++Префиксный инкремент
--Префиксный декремент
()Вызов функции или подвыражение
[]Выделение элемента массива
->Указатель структуры
.Член структуры
2!Логическое отрицание
~Поразрядное логическое НЕ (двоичная инверсия)
-Унарный минус (изменение знака)
+Унарный плюс
(type)Преобразование к типу
*Разыменование указателя
&Определение адреса переменной
sizeofОпределение размера в байтах
3*Умножение
/Деление
%Остаток от деления
4+Сложение
-Вычитание
5>>Поразрядный сдвиг вправо
<<Поразрядный сдвиг влево
6<Меньше
>Больше
<=Меньше или равно
>=Больше или равно
7==Равно
!=Не равно
8&Поразрядное логическое И
9^Поразрядное исключающее ИЛИ
10|Поразрядное логическое ИЛИ
11&&Логическое И
12||Логическое ИЛИ
13?:Оператор условия
14=Присваивание
+=Составное сложение
-=Составное вычитание
*=Составное умножение
/=Составное деление
%=Составное определение остатка от деления
>>=Составной поразрядный сдвиг вправо
<<=Составной поразрядный сдвиг влево
&=Составное поразрядное логическое И
^=Составное поразрядное исключающее ИЛИ
|=Составное поразрядное логическое ИЛИ
15,Операция "запятая"
++Постфиксный инкремент
--Постфиксный декремент