Операции с одинаковым приоритетом выполняются слева направо в порядке следования.
Приоритет | Оператор | Описание |
---|---|---|
1 | ++ | Префиксный инкремент |
-- | Префиксный декремент | |
() | Вызов функции или подвыражение | |
[] | Выделение элемента массива | |
-> | Указатель структуры | |
. | Член структуры | |
2 | ! | Логическое отрицание |
~ | Поразрядное логическое НЕ (двоичная инверсия) | |
- | Унарный минус (изменение знака) | |
+ | Унарный плюс | |
(type) | Преобразование к типу | |
* | Разыменование указателя | |
& | Определение адреса переменной | |
sizeof | Определение размера в байтах | |
3 | * | Умножение |
/ | Деление | |
% | Остаток от деления | |
4 | + | Сложение |
- | Вычитание | |
5 | >> | Поразрядный сдвиг вправо |
<< | Поразрядный сдвиг влево | |
6 | < | Меньше |
> | Больше | |
<= | Меньше или равно | |
>= | Больше или равно | |
7 | == | Равно |
!= | Не равно | |
8 | & | Поразрядное логическое И |
9 | ^ | Поразрядное исключающее ИЛИ |
10 | | | Поразрядное логическое ИЛИ |
11 | && | Логическое И |
12 | || | Логическое ИЛИ |
13 | ?: | Оператор условия |
14 | = | Присваивание |
+= | Составное сложение | |
-= | Составное вычитание | |
*= | Составное умножение | |
/= | Составное деление | |
%= | Составное определение остатка от деления | |
>>= | Составной поразрядный сдвиг вправо | |
<<= | Составной поразрядный сдвиг влево | |
&= | Составное поразрядное логическое И | |
^= | Составное поразрядное исключающее ИЛИ | |
|= | Составное поразрядное логическое ИЛИ | |
15 | , | Операция "запятая" |
++ | Постфиксный инкремент | |
-- | Постфиксный декремент |
Спасибо большое за таблицу! Я в одну книжку по Сям залез - так там в таблице приоритетов все операции были, кроме префиксных и постфиксных декремента и инкремента. А мне нужно было узнать именно о постфиксном инкременте. Пожалуй, самая трудно запоминаемая вещь в Сях - это приоритеты.
ОтветитьУдалитьПожалуйста :)
ОтветитьУдалитьТолько, наверное, не мне спасибо - мне таблица в виде ксерокопии досталась. Сам бы спасибо сказал, только не знаю кому :)
прикольно. але немає операцій new і delete
ОтветитьУдалитьдействительно прикольно, что в Си вообще нет new и delete :)
ОтветитьУдалитьвот здесь есть абсолютно такая же таблица... наверное отсюда... http://do.rksi.ru/library/courses/demo/tema1_3.dbk
ОтветитьУдалитьтолько там еще ассоциативный порядок указан
ОтветитьУдалитьДа, похоже, что это она и есть. Ассоциативный порядок я просто не стал здесь выписывать.
ОтветитьУдалитьНеобходимость в подобной табличке свидетельствует, что идея с большим числом приоритетов неудачна. Следовательно и использовать эту табличку не стоит, потому что анализ написанного с помощью нее выражения вносит неуверенность в правильность ее понимания, и вынуждает обращаться к внешним источникам памяти. Склоняюсь к мысли, что скобочки экономить не стоит. Компиляторы clang и gcc (-Wall) выдают предупреждение на выражение вида (1 || 1 && 0), хотя по правилам тут все однозначно. Шишек, видимо, было набито немало.
ОтветитьУдалить