Понимание приоритета и ассоциативности операторов C:четкое руководство
Приоритет операторов
Приоритет операторов определяет, какой оператор выполняется первым, если в выражении более одного оператора.
Давайте рассмотрим пример:
int x = 5 - 17* 6; В C приоритет * больше, чем - и = . Следовательно, 17 * 6 оценивается в первую очередь. Тогда выражение, включающее - оценивается как приоритет - выше, чем у = .
Вот таблица приоритета операторов от высшего к низшему. Свойство ассоциативности будет обсуждаться в ближайшее время.
Таблица приоритета и ассоциативности операторов
[]
->
.Функциональный вызов
Ссылка на элемент массива
Косвенный выбор участников
Прямой выбор участниковСлева направо!
~
+
-
++
--
&
*
размер
(тип)Логическое отрицание
Побитовое (1) дополнение
Унарный плюс
Унарный минус
Приращение
Декремент
Разыменование (адрес)
Ссылка на указатель
Возвращает размер объекта
Приведение типов (преобразование)Справа налево*
/
%Умножить
Разделить
ОстатокСлева направо+
-Бинарный плюс(дополнение)
Двоичный минус(вычитание)Слева направо<<
>> Левый сдвиг
Правый сдвигСлева направо<
<=
>
>=Меньше чем
Меньше или равно
Больше, чем
Больше или равноСлева направо==
!=Равно
Не равноСлева направо&Побитовое ИСлева направо^Побитовое исключающее ИЛИСлева направо|Побитовое ИЛИСлева направо&&Логическое ИСлева направо||Логическое ИЛИСлева направо?:Условный операторСправа налево=
*=
/=
%=
+=
-=
&=
^=
|=
<<=
>>=Простое задание
Назначить продукт
Присвоить частное
Назначить остаток
Присвоить сумму
Присвоить разницу
Присвоить побитовое И
Назначить побитовое исключающее ИЛИ
Присвоить побитовое ИЛИ
Назначить левый сдвиг
Назначить сдвиг вправоСправа налево,Разделитель выраженийСлева направо
Ассоциативность операторов
Ассоциативность операторов определяет направление вычисления выражения. Например,
b = a; Здесь значение a присваивается b, а не наоборот. Это потому, что ассоциативность = оператор справа налево.
Кроме того, если присутствуют два оператора с одинаковым приоритетом (приоритетом), ассоциативность определяет направление их выполнения.
Давайте рассмотрим пример:
1 == 2 != 3
Здесь операторы == и != имеют одинаковый приоритет. Причем их ассоциативность слева направо. Следовательно, 1 == 2 выполняется первым.
Выражение выше эквивалентно:
(1 == 2) != 3
Примечание: Если в операторе несколько операторов, вы можете использовать круглые скобки () чтобы сделать код более читабельным.
Содержание
Язык C