Skip to content

Commit 218c4e4

Browse files
committed
man. Приоритет операторов
1 parent 2d38612 commit 218c4e4

File tree

6 files changed

+99
-0
lines changed

6 files changed

+99
-0
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Приоритет операторов
2+
3+
=Операторы= -- это символы, которые указывают компилятору на необходимость выполнения какой-нибудь операции с одним или несколькими операндами.
4+
=Операнд= -- это то, на что воздействует оператор.
5+
6+
```c
7+
3 + 7 // 3 и 7 -- это операнды, а + -- оператор.
8+
i++ // i -- операнд, ++ -- оператор
9+
```
10+
11+
Один и тот же символ в разных контекстах может указывать на разные операции, например, `*`, `&`, `-`, `+`.
12+
13+
Выражение может содержать несколько различных операторов. Порядок выполнения операций, задаваемых операторами, зависит от приоритета операторов. Операции, соответствующие операторам с более высоким приоритетом, выполняются первыми.
14+
15+
16+
## Таблица приоритетов операторов языка Си
17+
18+
**1 приоритет**
19+
- `( )` группирующие скобки и вызовы функции
20+
- `[]` индексация массива
21+
- `.`, `->` прямой и косвенный доступ к элементу структуры или объединения
22+
- `++`, `--` постфиксные инкремент и декремент
23+
24+
**2 приоритет** (обратная ассоциативность, справа налево)
25+
- `+`, `-` унарные плюс и минус `-`
26+
- `!` логическое отрицание
27+
- `~` побитовое отрицание
28+
- `++`, `--` префиксные инкремент и декремент
29+
- `&` взятие адреса
30+
- `*` косвенная адресация
31+
- `(type)` приведение к типу
32+
- `sizeof` получение размера операнда
33+
34+
**3 приоритет**
35+
- `*`, `/` и `%`
36+
37+
**4 приоритет**
38+
- `+`, `-` бинарные сложение и вычитание
39+
40+
**5 приоритет**
41+
- `<<`, `>>` побитовые сдвиги влево и вправо
42+
43+
**6 приоритет**
44+
- `<`, `<=`, `>`, `>=` сравнения
45+
46+
**7 приоритет**
47+
- `==`, `!=` проверка равенства и неравенства
48+
49+
**8 приоритет**
50+
- `&` побитовое И
51+
52+
**9 приоритет**
53+
- `^` побитовое Исключающее ИЛИ
54+
55+
**10 приоритет**
56+
- `|` побитовое ИЛИ
57+
58+
**11 приоритет**
59+
- `&&` логическое И
60+
61+
**12 приоритет**
62+
- `||` логическое ИЛИ
63+
64+
**13 приоритет** (обратная ассоциативность, справа налево)
65+
- `? :` условный оператор
66+
67+
**14 приоритет** (обратная ассоциативность, справа налево)
68+
- `=`, `+=`, `-=`, `*=`, `\=`, `%=`, `>>=`, `<<=`, `&=`, `^=`, `|=` присвания
69+
70+
**15 приоритет**
71+
- `,`
72+
73+
74+
## Ассоциативность операторов
75+
76+
Если в одном выражении встречаются два оператора с одинаковым приоритетом, то порядо выполнения определяется ассоциативностью. В общем случае, вычисление производятся справа налево (прямая ассоцитивность).
77+
78+
```c
79+
int x = 10 / 2 * 5; // = 25, т.к. для операторов / и * ассоциативность прямая,
80+
// вычисляются слева направо. Эквивалентно выражению (10 | 2) * 5
81+
```
82+
83+
Группы операторов, имеющие обратную ассоциативность (вычисляются справа налево) обозначены в таблице выше.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"title": "Приоритет операторов",
3+
"description": "",
4+
"keywords": "",
5+
"canonical_link": "https://youngcoder.ru/manuals/1/prioritet_operatorov"
6+
}

manuals/1/0__prioritet_operatorov/practice.md

Whitespace-only changes.

manuals/1/0__prioritet_operatorov/reference.md

Whitespace-only changes.

manuals/1/index.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Справочные материалы по Си
2+
3+
В этом разделе собраны различные справочные материалы и таблицы по языку Си.

manuals/1/meta.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"title": "Справочные материалы",
3+
"description": "В этом уроке собраные различные справочные материалы по языку Си.",
4+
"keywords": "справочные материалы по Си, С reference, Си справочник",
5+
"canonical_link": "https://youngcoder.ru/manuals/1/",
6+
"has_glory_hall": false
7+
}

0 commit comments

Comments
 (0)