You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: lang_c/3/2__formatnyi_vyvod_printf/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@
14
14
15
15
Каким же образом функция `printf` управляет форматированием выводимых данных? Управление форматированием осуществляется с помощью =формат-строки=, которая передаётся в `printf` в качестве аргумента.
16
16
17
-
Давайте впомним, как выглядел вызов функции `printf` в программе «Hello, World!» из первого урока.
17
+
Давайте вспомним, как выглядел вызов функции `printf` в программе «Hello, World!» из первого урока.
18
18
19
19
% **Важно!**
20
20
В коде ниже указана только одна строчка, а не полный текст программы «Hello, World!». Чтобы превратить её в полноценную программу, необходимо добавить подключение заголовочного файла stdio.h, определение функции `main` и пр.
Copy file name to clipboardExpand all lines: lang_c/6/1__otnosheniya_i_usloviya/article.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Отношения и логические операторы
2
2
3
-
Как нам уже известно из вводного урока, инструкция `if-else` выполняет те или иные действия в зависимости результата проверки дополнительных условий. Прежде чем переходить к её подробному изучению, давайте разберёмся, какие возможности предоставляет язык Си для записи этих самых дополнительных условий.
3
+
Как нам уже известно из вводного урока, инструкция `if-else` выполняет те или иные действия в зависимости от результата проверки дополнительных условий. Прежде чем переходить к её подробному изучению, давайте разберёмся, какие возможности предоставляет язык Си для записи этих самых дополнительных условий.
4
4
5
5
Самая базовая возможность -- это сравнение двух значений. Для этого в Си определены следующие =операторы сравнения=:
6
6
@@ -25,7 +25,7 @@
25
25
26
26
В нашем случае `10 > 3`, значение `10`, записанное слева от оператора, больше чем значение `3`, записанное от оператора справа, следовательно результат проверки положительный. В таких случаях ещё говорят логическое выражение истинно или отношение истинно.
27
27
28
-
Хорошо, мы выяснили, что выражение `10 > 3` истинно. Но каков его результат? Другими словами, каково значение этого логического выражения? Например, для выражения `3 + 7` результат `10`, а для каков результат для выражения `10 > 3`? Что такое истина для компьютера? Как её записать в виде числа?
28
+
Хорошо, мы выяснили, что выражение `10 > 3` истинно. Но каков его результат? Другими словами, каково значение этого логического выражения? Например, для выражения `3 + 7` результат `10`, а каков результат для выражения `10 > 3`? Что такое истина для компьютера? Как её записать в виде числа?
29
29
30
30
А тут всё довольно просто. Если выражение истинно, то его результат равен `1`, а если выражение ложно, то его результат равен `0`.
31
31
@@ -172,10 +172,10 @@ int main(void)
172
172
Допустим, пользователь ввёл значение `22`. Программа начинает последовательно, слева направо вычислять значение выражения `18 <= 22 <= 100`.
173
173
174
174
Сначала вычисляется первая половинка выражения: `18 <= 22`. Т.к. это отношение истинно, то оператор `<=` вернёт значение `1`.
175
-
Подставляя `1` вместо `18 <= 22`, мы получим новое выражение: `1 <= 100`. Оно тоже, конечно, истинно, а значит итоговый результат всего выражение будет `1`.
175
+
Подставляя `1` вместо `18 <= 22`, мы получим новое выражение: `1 <= 100`. Оно тоже, конечно, истинно, а значит итоговый результат всего выражения будет `1`.
176
176
177
177
Самые внимательные уже догадались, что здесь притаилась проблема. Давайте проверим это же выражение при `x = 10`.
178
-
Вычисляем первую часть: `10 <= 18` -- ложь, значит это выражение равно `0`. Подставляем `0` вместо `10 <= 18`, получаем: `0 <= 100`. Это отношение истинно, а значит итоговый результат всего выражения будет `1`.
178
+
Вычисляем первую часть: `18 <= 10` -- ложь, значит это выражение равно `0`. Подставляем `0` вместо `18 <= 10`, получаем: `0 <= 100`. Это отношение истинно, а значит итоговый результат всего выражения будет `1`.
Оператор `!` используется для отрицания результат логического выражения, к которому он был применён. Истину он делает ложью, а ложь, наоборот, превращает в истину.
205
+
Оператор `!` используется для отрицания результата логического выражения, к которому он был применён. Истину он делает ложью, а ложь, наоборот, превращает в истину.
206
206
207
207
Посмотрите на пример:
208
208
@@ -330,4 +330,4 @@ int main(void)
330
330
9.**логическое ИЛИ `||`**
331
331
10. присваивание `=`
332
332
333
-
Из-за того, что оператор присваивание`=` имеет приоритет ниже, чем операторы `<=` и `&&`, а оператор `&&` в свою очередь имеет приоритет ниже, чем оператор `<=`, то в выражении `int res = (18 <= x) && (x <= 100);` из Листинга 10 мы можем убрать скобки и результат останется прежним. Но, как и прежде, я рекомендую вам не пренебрегать скобками и явно задавать порядок выполнения операций, чтобы не допустить случайных ошибок.
333
+
Из-за того, что оператор присваивания`=` имеет приоритет ниже, чем операторы `<=` и `&&`, а оператор `&&` в свою очередь имеет приоритет ниже, чем оператор `<=`, то в выражении `int res = (18 <= x) && (x <= 100);` из Листинга 10 мы можем убрать скобки и результат останется прежним. Но, как и прежде, я рекомендую вам не пренебрегать скобками и явно задавать порядок выполнения операций, чтобы не допустить случайных ошибок.
Copy file name to clipboardExpand all lines: lang_c/6/1__otnosheniya_i_usloviya/practice.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@
8
8
9
9
### Исследовательские задачи для хакеров
10
10
11
-
В некоторых языках программирования есть встроенный логический тип данных. В языке Си логический тип данных было добавлен в стандарте C99.
12
-
Это тип данных `_Bool`, который хранит только два значения: `0` (ложь) и `1` (истина). Кроме того, этим же стандартном введён заголовочный файл `stdbool.h`, который определяет значения `true` (истина, т.е. `1`) и `false` (ложь, т.е. `0`).
11
+
В некоторых языках программирования есть встроенный логический тип данных. В язык Си логический тип данных был добавлен в стандарте C99.
12
+
Это тип данных `_Bool`, который хранит только два значения: `0` (ложь) и `1` (истина). Кроме того, этим же стандартом введён заголовочный файл `stdbool.h`, который определяет значения `true` (истина, т.е. `1`) и `false` (ложь, т.е. `0`).
13
13
14
-
Изучите самостоятельно, как работает тип `_Bool` и заголовочный файл `stdbool.h`.
14
+
Изучите самостоятельно, как работает тип `_Bool` и заголовочный файл `stdbool.h`.
Copy file name to clipboardExpand all lines: lang_c/6/1__otnosheniya_i_usloviya/reference.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ fabs(x - y) < 0.001 // с точностью до одной тысячной (3
10
10
fabs(x - y) < 0.0000001 // с точностью до одной десятимилионной (7 знаков)
11
11
```
12
12
13
-
Но, конечно, не имеет смысла задавать точность большую, нежели используется в для хренения вещественных чисел в памяти компьютера, т.к. если в исходных числах точны только первые `15` знаков, то нет смысла сравнивать с точностью в `20` знаков, т.к. мы заранее знаем, что после `15` знака значения даже исходные значения неточны, что уж говорить о значениях, полученных из исходных в результате каких-либо вычислений.
13
+
Но, конечно, не имеет смысла задавать точность большую, нежели используется для хранения вещественных чисел в памяти компьютера, т.к. если в исходных числах точны только первые `15` знаков, то нет смысла сравнивать с точностью в `20` знаков, т.к. мы заранее знаем, что после `15` знака даже исходные значения неточны, что уж говорить о значениях, полученных из исходных в результате каких-либо вычислений.
14
14
15
15
Обычно точности в 7-8 знаков достаточно для подавляющего большинства обыденных практических задач.
16
16
@@ -32,4 +32,4 @@ fabs(x - y) < 0.0000001 // с точностью до одной десятим
0 commit comments