C Приоритет и ассоциативность операторов: определение и примеры
В этом руководстве вы узнаете о приоритете и ассоциативности операторов с помощью примеров.
Приоритет операторов
Приоритет операторов определяет, какой оператор выполняется первым, если в выражении более одного оператора.
Рассмотрим пример:
int x = 5 - 17* 6;
В C приоритет *
выше, чем -
и =
. Следовательно, 17 * 6
оценивается первым. Затем вычисляется выражение, включающее -
, так как приоритет -
выше, чем у =
.
Вот таблица приоритета операторов от высшего к низшему. Вскоре мы обсудим свойство ассоциативности .
Таблица приоритета и ассоциативности операторов
Оператор | Значение оператора | Ассоциативность | ||
---|---|---|---|---|
() [] -> . | Функциональный вызов Ссылка на элемент массива Косвенный выбор элемента Прямой выбор элемента | Слева направо | ||
! ~ + — ++ — и * размер (тип) | Логическое отрицание Побитовое (1) дополнение Унарный плюс Унарный минус Приращение Декремент Разыменование (адрес) Ссылка на указатель Возвращает размер объекта Приведение типов (преобразование) | Справа налево | ||
* / % | Умножить Разделить Остаток | Слева направо | ||
+ — | Двоичный плюс (сложение) Двоичный минус (вычитание) | Слева направо | ||
<< >> | Сдвиг влево | Слева направо | 9Побитовое исключающее ИЛИ | Слева направо |
| | Побитовое ИЛИ | Слева направо | ||
&& | Логическое И | Слева направо | ||
|| | Логическое ИЛИ | Слева направо | ||
?: | Условный оператор | Справа налево | ||
= *= /= %= += -= &= 9= |= <<= >>= | Простое присваивание Присвоить произведение Присвоить частное Присвоить остаток Присвоить сумму Присвоить разность Присвоить побитовое И Присвоить побитовое XOR Присвоить побитовое ИЛИ Присвоить сдвиг влево Присвоить сдвиг вправо | Справа налево | ||
, | Разделитель выражений | Слева направо |
Ассоциативность операторов
Ассоциативность операторов определяет направление, в котором вычисляется выражение. Например,б = а;
Здесь значение a присваивается b , а не наоборот. Это потому, что оператор =
ассоциативен справа налево.
Кроме того, если присутствуют два оператора с одинаковым старшинством (приоритетом), ассоциативность определяет направление их выполнения.
Рассмотрим пример:
1 == 2 != 3
Здесь операторы ==
и !=
имеют одинаковый приоритет. И их ассоциативность слева направо. Следовательно, 1 == 2
выполняется первым.
Приведенное выше выражение эквивалентно:
(1 == 2) != 3
Примечание: Если оператор содержит несколько операторов, вы можете использовать круглые скобки ()
, чтобы сделать код более читабельным.
Содержание
С | Операторы | Codecademy
- Арифметические операторы
- Реляционные операторы
- Логические операторы
- Побитовые операторы
- Операторы присваивания
- Разные операторы
Арифметические операторы
C имеет следующие основные арифметические операторы для выполнения общих математических операций:
Оператор | Имя | Описание |
---|---|---|
+ | Дополнение | x + y возвращает сумму x и y |
- | Вычитание | x - y возвращает разницу между x и y |
* | Умножение | x * y возвращает произведение x и y |
/ | Отдел | x/y возвращает частное x и y |
% | Модуль | x % y возвращает целочисленный остаток от деления x на y |
++ | Приращение | х++ возвращает х + 1 |
-- | Уменьшение | х-- возвращает х - 1 |
инт х = 0;
х = х + 4; // x теперь 4
x = x - 1; // x теперь 3
x = x * 8; // х теперь 24
х = х / 4; // x теперь 6
x = x % 4; // x теперь 2
x++; // x теперь 3
x--; // x теперь 2
Операторы сравнения
Операторы сравнения сравнивают два значения и возвращают true
или ложь
.
Оператор | Имя | Описание |
---|---|---|
== | Равно | x == y равно true , если x и y равны. |
!= | Не равно | x != y равно true , если x и y не равны. |
< | Менее | x < y равно true , если x меньше y . |
> | Больше | x > y равно true , если x больше y . |
<= | Меньше или равно | x <= y равно true , если x меньше или равно и . |
>= | Больше или равно | x >= y равно true , если x больше или равно y . |
инт х = 7;
инт у = 5;
if (x > y) {
// Этот код будет выполнен.
}
if (x == y) {
// Этот код не запустится.
}
Логические операторы
Логические операторы работают с логическими значениями и возвращают логические значения.
Оператор | Имя | Описание |
---|---|---|
! | Не | !x равно true , когда x равно false и false , когда x равно true . |
&& | и | x && y равно true , только если x и y оба равны true . |
|| | или | х || y равно true , если либо x , либо y равно true . |
инт х = 7;
инт у = 5;
if (x > y \|\| x == y) {
// Этот код будет выполнен.
}
если (x == y && x < 0) {
// Этот код не запустится.
}
Побитовые операторы
Побитовые операторы манипулируют отдельными битами в целом числе.
Оператор | Имя | Описание | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
и | и | Бит результата установлен только в том случае, если этот бит установлен в обоих операндах. | |||||||||||||||||||||||||||||
| | или | Бит результата установлен, если этот бит установлен в любом из операндов. 9 | Ксор | Бит результата установлен, только если этот бит установлен только в одном операнде. | |||||||||||||||||||||||||||
~ | Не | Берет один операнд и инвертирует в нем каждый бит. | |||||||||||||||||||||||||||||
<< | Левая смена | a << b означает, что биты a смещены влево на b пробелов. | |||||||||||||||||||||||||||||
>> | Правый сдвиг 1 = 10100 х = 7 << 2; // х равно 28 : 00111 << 2 = 11100 х = 19 >> 2; // x равно 4 : 10011 >> 2 = 00100 Операторы присваиванияОператоры присваивания присваивают значение справа переменной слева.
Разные операторыРазные операторы не относятся к определенной категории. Оставить комментарий
|