Skip to content

Commit 9ab2f44

Browse files
Update article.md
Исправления
1 parent 15e1b12 commit 9ab2f44

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

lang_c/6/1__otnosheniya_i_usloviya/article.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Отношения и логические операторы
22

3-
Как нам уже известно из вводного урока, инструкция `if-else` выполняет те или иные действия в зависимости результата проверки дополнительных условий. Прежде чем переходить к её подробному изучению, давайте разберёмся, какие возможности предоставляет язык Си для записи этих самых дополнительных условий.
3+
Как нам уже известно из вводного урока, инструкция `if-else` выполняет те или иные действия в зависимости от результата проверки дополнительных условий. Прежде чем переходить к её подробному изучению, давайте разберёмся, какие возможности предоставляет язык Си для записи этих самых дополнительных условий.
44

55
Самая базовая возможность -- это сравнение двух значений. Для этого в Си определены следующие =операторы сравнения=:
66

@@ -25,7 +25,7 @@
2525

2626
В нашем случае `10 > 3`, значение `10`, записанное слева от оператора, больше чем значение `3`, записанное от оператора справа, следовательно результат проверки положительный. В таких случаях ещё говорят логическое выражение истинно или отношение истинно.
2727

28-
Хорошо, мы выяснили, что выражение `10 > 3` истинно. Но каков его результат? Другими словами, каково значение этого логического выражения? Например, для выражения `3 + 7` результат `10`, а для каков результат для выражения `10 > 3`? Что такое истина для компьютера? Как её записать в виде числа?
28+
Хорошо, мы выяснили, что выражение `10 > 3` истинно. Но каков его результат? Другими словами, каково значение этого логического выражения? Например, для выражения `3 + 7` результат `10`, а каков результат для выражения `10 > 3`? Что такое истина для компьютера? Как её записать в виде числа?
2929

3030
А тут всё довольно просто. Если выражение истинно, то его результат равен `1`, а если выражение ложно, то его результат равен `0`.
3131

@@ -172,10 +172,10 @@ int main(void)
172172
Допустим, пользователь ввёл значение `22`. Программа начинает последовательно, слева направо вычислять значение выражения `18 <= 22 <= 100`.
173173

174174
Сначала вычисляется первая половинка выражения: `18 <= 22`. Т.к. это отношение истинно, то оператор `<=` вернёт значение `1`.
175-
Подставляя `1` вместо `18 <= 22`, мы получим новое выражение: `1 <= 100`. Оно тоже, конечно, истинно, а значит итоговый результат всего выражение будет `1`.
175+
Подставляя `1` вместо `18 <= 22`, мы получим новое выражение: `1 <= 100`. Оно тоже, конечно, истинно, а значит итоговый результат всего выражения будет `1`.
176176

177177
Самые внимательные уже догадались, что здесь притаилась проблема. Давайте проверим это же выражение при `x = 10`.
178-
Вычисляем первую часть: `10 <= 18` -- ложь, значит это выражение равно `0`. Подставляем `0` вместо `10 <= 18`, получаем: `0 <= 100`. Это отношение истинно, а значит итоговый результат всего выражения будет `1`.
178+
Вычисляем первую часть: `18 <= 10` -- ложь, значит это выражение равно `0`. Подставляем `0` вместо `18 <= 10`, получаем: `0 <= 100`. Это отношение истинно, а значит итоговый результат всего выражения будет `1`.
179179

180180
Можете проверить самостоятельно:
181181
```c
@@ -202,7 +202,7 @@ printf("%d\n", 18 <= x <= 100); // выведет 1. ОШИБКА!
202202
```
203203

204204
### Оператор `!` логическое НЕ
205-
Оператор `!` используется для отрицания результат логического выражения, к которому он был применён. Истину он делает ложью, а ложь, наоборот, превращает в истину.
205+
Оператор `!` используется для отрицания результата логического выражения, к которому он был применён. Истину он делает ложью, а ложь, наоборот, превращает в истину.
206206

207207
Посмотрите на пример:
208208

@@ -330,4 +330,4 @@ int main(void)
330330
9. **логическое ИЛИ `||`**
331331
10. присваивание `=`
332332

333-
Из-за того, что оператор присваивание `=` имеет приоритет ниже, чем операторы `<=` и `&&`, а оператор `&&` в свою очередь имеет приоритет ниже, чем оператор `<=`, то в выражении `int res = (18 <= x) && (x <= 100);` из Листинга 10 мы можем убрать скобки и результат останется прежним. Но, как и прежде, я рекомендую вам не пренебрегать скобками и явно задавать порядок выполнения операций, чтобы не допустить случайных ошибок.
333+
Из-за того, что оператор присваивания `=` имеет приоритет ниже, чем операторы `<=` и `&&`, а оператор `&&` в свою очередь имеет приоритет ниже, чем оператор `<=`, то в выражении `int res = (18 <= x) && (x <= 100);` из Листинга 10 мы можем убрать скобки и результат останется прежним. Но, как и прежде, я рекомендую вам не пренебрегать скобками и явно задавать порядок выполнения операций, чтобы не допустить случайных ошибок.

0 commit comments

Comments
 (0)