Частичное вычисление и тернарная операция
Рассмотрим условный оператор
При b==0 деления но 0 не происходит, потому что не выполняется.
По сути в примере описано одно выражение (которое присваивается в a), просто у этого выражения две альтернативы. В Си для записи выражения с альтернативой есть специальная тернарная (трёхместная) операция.
<выражение-условие> ? <выражение-true> : <выражение-false>
в нашем случае
1 a = b!=0? 1/b : 0;
При этом 1/b также не выполняется, если условие b!=0 ложно.
Более того:
Конъюнкция && (И):
A && B
B
A
0
Не 0
0
0
0
Не 0
0
1
- всегда == 0 (False), если первый операнд == 0
- ⇒ второй операнд не вычисляется вообще
- так что какой-нибьудь не вызовет ошибки, если b==0, потому что b уже != 0
Та же история с дизъюнкцией || (ИЛИ):
A||B
B
A
0
Не 0
0
0
1
Не 0
1
1
- второй операнд вычисляется только если первый — ложь, в остальных случаях достаточно значения первого
Разбор Д/З
Неинтересно всё, кроме того, что же такое a < b < c в Си
Это вычисление выражения a < b и сравнение результата (0 или 1) с c, т. е. то же самое, что (a<b)<c
- Чтобы быть уверенным, что кирпич a,b,c пролезет в дырку x,y, его надо попробовать засунуть туда 6 раз (дважды каждой из различных граней с поворотом на 90°). Обратите внимание на то, как в Си можно переносить слишком длинную строку:
- Удалим явно лишние сравнения, внеся кое-что под скобки:
Д/З
Прочитать в учебнике об условных операторах и о логических выражениях
Ввести вещественные a≠0,b и c; вывести количество решений квадратного уравнения ax²+bx+c=0
- Решить прошлую задачу №3: Ввести x и y. Проверить, принадлежит ли точка заштрихованной области на картинке:
Подсказка: говоря по-русски, точка x:y принадлежит области, если сумма квадратов x и y не больше 1 и y>=|x|, т. е. y>=x для неотрицательного x или y>=-x для отрицательного
- Ввести 5 чисел, найти максимум
подсказка: в столбик ввести