21 % 6; /* результат 3 */ 21 / 6; /* результат 3 */
21 % 7; /* результат 0 */ 21 / 7; /* результат 3 */
-21 % -8; /* результат -5 */ -21 / -8; /* результат 2 */
21 % -5; /* результат 1 */ 21 / -5; /* результат -4 */
Упражнение 4.4. Расставьте скобки в следующем выражении так, чтобы продемонстрировать порядок его обработки. Проверьте свой ответ, откомпилировав и отобразив результат выражения без круглых скобок.
12 / 3 * 4 + 5 * 15 + 24 % 4 / 2
Упражнение 4.5. Определите результат следующих выражений:
(а) -30 * 3 + 21 / 5 (b) -30 + 3 * 21 / 5
(с) 30 / 3 * 21 % 5 (d) -30 / 3 * 21 % 4
Упражнение 4.6. Напишите выражение, чтобы определить, является ли значение типа int четным или нечетным.
Упражнение 4.7. Что значит переполнение? Представьте три выражения, приводящих к переполнению.
4.3. Логические операторы и операторы отношения
Операторам отношения передают операторы арифметического типа или типа указателя, а логическим операторам — операнды любого типа, допускающего преобразование в тип bool. Все они возвращают значение типа bool. Арифметические операнды и указатели со значением нуль рассматриваются как значение false, а все другие как значение true. Операнды для этих операторов являются r-значениями, а результат — r-значение.
Таблица 4.2. Логические операторы и операторы отношения
| Порядок | Оператор | Действие | Применение |
|---|---|---|---|
| Правосторонний |
!
|
Логическое NOT |
!выражение
|
| Левосторонний |
<
|
Меньше |
выражение < выражение
|
| Левосторонний |
<=
|
Меньше или равно |
выражение <= выражение
|
| Левосторонний |
>
|
Больше |
выражение > выражение
|
| Левосторонний |
>=
|
Больше или равно |
выражение >= выражение
|
| Левосторонний |
==
|
Равно |
выражение == выражение
|
| Левосторонний |
!=
|
Не равно |
выражение != выражение
|
| Левосторонний |
&&
|
Логическое AND |
выражение && выражение
|
| Левосторонний |
||
|
Логическое OR |
выражение || выражение
|
Общим результатом оператора логического AND (&&) является true, если и только если оба его операнда рассматриваются как true. Оператор логического OR (||) возвращает значение true, если любой из его операндов рассматривается как true.