Skip to content

Commit 0249e78

Browse files
committed
Новая версия заметки 6.2 Отношения и логические операторы
1 parent 6a55faa commit 0249e78

File tree

6 files changed

+314
-80
lines changed

6 files changed

+314
-80
lines changed

lang_c/6/1__otnosheniya_i_usloviya/article.md

Lines changed: 267 additions & 76 deletions
Large diffs are not rendered by default.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"title": "Операции отношения и логические операции в языке Си",
3-
"description": "Для того, чтобы использовать условный оператор, необходимо разобраться каким образом можно записывать условия. Для этого используются операции отношения и логические операции. Данный урок посвящён им. Подробное объяснение их работы и практические задачи.",
4-
"keywords": "операции отношения, логические операции, логические выражения",
2+
"title": "Отношения и логические операторы языка Си",
3+
"description": "Урок посвящён подробному разбору операторов сравнения и логических операторов в Си. Разбор включает практические примеры и разбор типичных ошибок начинающих программистов.",
4+
"keywords": "операторы сравнения, логические операторы, язык Си, логическое И, логическое ИЛИ, логическое НЕ, проверка диапазона, сравнение вещественных чисел, приоритет операторов",
55
"canonical_link": "https://youngcoder.ru/lessons/6/otnosheniya_i_usloviya"
66
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
11
## Практика
22

33
- Решите [задачи с автоматической проверкой решения на Stepik](https://stepik.org/lesson/57210/step/1)
4+
5+
<div class="lessonStepikBlock">
6+
<iframe src="https://stepik.org/lesson/57210/step/1"></iframe>
7+
</div>
8+
9+
### Исследовательские задачи для хакеров
10+
11+
В некоторых языках программирования есть встроенный логический тип данных. В языке Си логический тип данных было добавлен в стандарте C99.
12+
Это тип данных `_Bool`, который хранит только два значения: `0` (ложь) и `1` (истина). Кроме того, этим же стандартном введён заголовочный файл `stdbool.h`, который определяет значения `true` (истина, т.е. `1`) и `false` (ложь, т.е. `0`).
13+
14+
Изучите самостоятельно, как работает тип `_Bool` и заголовочный файл `stdbool.h`.
11.6 KB
Loading
15 KB
Loading
Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
11
## Дополнительные материалы
22

3-
1. Обязательно надо использовать два значка в логических операциях И `&&` и ИЛИ `||`. Одинарные значки используются для `побитовых логических опециций` И и ИЛИ. С ними мы ещё как-нибудь разберёмся.
3+
**1.** Операторы сравнения -- это обобщающее название для =операторов отношения (relational operators)= (`>`, `>=`, `<`, `<=`) и =операторов эквивалентности (equality operators)= (`==`, `!=`). Именно такие термины используются в стандарте языка Си.
4+
5+
6+
**2.** Проверяя приближённое равенство вещественных чисел мы сами задаём точность с которой проверяется приближённое равенство. Например:
7+
8+
```c
9+
fabs(x - y) < 0.001 // с точностью до одной тысячной (3 знака)
10+
fabs(x - y) < 0.0000001 // с точностью до одной десятимилионной (7 знаков)
11+
```
12+
13+
Но, конечно, не имеет смысла задавать точность большую, нежели используется в для хренения вещественных чисел в памяти компьютера, т.к. если в исходных числах точны только первые `15` знаков, то нет смысла сравнивать с точностью в `20` знаков, т.к. мы заранее знаем, что после `15` знака значения даже исходные значения неточны, что уж говорить о значениях, полученных из исходных в результате каких-либо вычислений.
14+
15+
Обычно точности в 7-8 знаков достаточно для подавляющего большинства обыденных практических задач.
16+
17+
**3.** Как сказано в уроке, операторы `&` и `|` тоже существуют. Они используются для =побитовых логических операций=: побитовое И `&` и побитовое ИЛИ `|`. Они работают с двоичным представлением целых чисел и производят логические операции над отдельными битами.
18+
19+
**Пример:** Пусть для хранения целых чисел используется `8` бит. Тогда число `2` в двоичном виде записывается как `00000010`, а число `5` -- `00000101`.
20+
21+
Результат применения к этим числам побитовых операторов И и ИЛИ будет равен:
22+
23+
```
24+
00000010
25+
&
26+
00000101
27+
=
28+
00000000
29+
30+
00000010
31+
|
32+
00000101
33+
=
34+
00000111
35+
```

0 commit comments

Comments
 (0)