Операции с одинаковым приоритетом выполняются слева направо в порядке следования.
| Приоритет | Оператор | Описание |
|---|---|---|
| 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), хотя по правилам тут все однозначно. Шишек, видимо, было набито немало.
ОтветитьУдалить