3.3.1 Проверки

3.3.1 Проверки

Проверка значения может осуществляться или оператором if, или оператором switch:

if ( выражение ) оператор if ( выражение ) оператор else оператор switch ( выражение ) оператор

В С++ нет отдельного булевского типа. Операции сравнения

== != « „= “ »=

возвращают целое 1, если сравнение истинно, иначе возращают 0. Не так уж непривычно видеть, что ИСТИНА определена как 1, а ЛОЖЬ определена как 0.

В операторе if первый (или единственный) оператор выпоняется в том случае, если выражение ненулевое, иначе выполнется второй оператор (если он задан). Отсюда следует, что в качестве условия может использоваться любое целое выражение. В частности, если a целое, то

if (a) // ...

эквивалентно

if (a != 0) // ...

Логические операции amp; amp; !! ! наиболее часто используются в условиях. Операции amp; amp; и !! не будут вычислять второй аргмент, если это ненужно. Например:

if (p amp; amp; 1«p-»count) // ...

вначале проверяет, является ли p не нулем, и только если это так, то проверяет 1«p-»count.

Некоторые простые операторы if могут быть с удобством

заменены выражениями арифметического if. Например:

if (a «= d) max = b; else max = a;

лучше выражается так:

max = (a«=b) ? b : a;

Скобки вокруг условия необязательны, но я считаю, что когда они используются, программу легче читать.

Некоторые простые операторы switch можно по-другому зписать в виде набора операторов if. Например:

switch (val) (* case 1: f(); break; case 2; g(); break; default: h(); break; *)

иначе можно было бы записать так:

if (val == 1) f(); else if (val == 2) g(); else h();

Смысл тот же, однако первый вариант (switch) предпочттельнее, поскольку в этом случае явно выражается сущность действия (сопоставление значения с рядом констант). Поэтому в нетривиальных случаях оператор switch читается легче.

Заботьтесь о том, что switch должен как-то завершаться, если только вы не хотите, чтобы выполнялся следующий case. Например:

switch (val) (* // осторожно case 1: cout «„ „case 1 “; case 2; cout „« «case 2 “; default: cout «« «default: case не найден “; *)

при val==1 напечатает

case 1 case 2 default: case не найден

к великому изумлению непосвященного. Самый обычный спсоб завершить случай – это break, иногда можно даже использвать goto. Например:

switch (val) (* // осторожно

case 0: cout «„ „case 0 “; case1: case 1: cout „„ «case 1 “; return; case 2; cout «« «case 2 “; goto case1; default: cout «« «default: case не найден “; return; *)

При обращении к нему с val==2 выдаст

case 2 case 1

Заметьте, что метка case не подходит как метка для упоребления в операторе goto:

goto case 1; // синтаксическая ошибка

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

12.4. Макроопределения проверки адреса IPv6

Из книги автора

12.4. Макроопределения проверки адреса IPv6 Существует небольшой класс приложений IPv6, которые должны знать, с каким собеседником они взаимодействуют (IPv4 или IPv6). Эти приложения должны знать, является ли адрес собеседника адресом IPv4, преобразованным к виду IPv6. Определены


17.5.4. Проверки

Из книги автора

17.5.4. Проверки Документация, поставляемая вместе с ядром, советует после завершения конфигурации выполнить два действия: 1. Заглянуть в файл Makefile, чтобы вручную поправить некоторые значения. 2. Дать команду make dep для установки зависимостей.Конечно, для ручной правки файла


Непрерывность проверки кода

Из книги автора

Непрерывность проверки кода Уже двадцать лет тому назад было установлено, что визуальная проверка кода - это эффективный, с точки зрения стоимости, метод исправления дефектов в программных продуктах. Это подтверждают и эмпирическими исследованиями, однако несмотря на


Настройки проверки орфографии

Из книги автора

Настройки проверки орфографии Adobe InDesign не только содержит в себе текстовый редактор, но и постоянно использует его механизмы проверки орфографии. Особо следует отметить, что даже в нелокализованных версиях можно воспользоваться словарями и механизмами проверки


Утилиты для проверки почты

Из книги автора

Утилиты для проверки почты Каждый раз запускать для проверки писем почтовый клиент, даже если он все делает сам, несколько неудобно. Тяжелые приложения забирают системные ресурсы, которые никогда не бывают лишними. На помощь приходят специальные утилиты для проверки


Универсальные утилиты проверки почты

Из книги автора

Универсальные утилиты проверки почты Утилита проверки почты KDE Korn является частью модуля KDE pim (http://pim.kde.org/). Умеет проверять наличие информации по протоколам mbox, pop3, imap4, qmail, kmail, nntp и некоторым другим, поддерживает основные методы аутентификации. В репозитарии Ubuntu, как и во


Лаборатория проверки оборудования

Из книги автора

Лаборатория проверки оборудования В лаборатории собрано много нетбуков и других устройств, на которых можно регулировать сетевые настройки (для проводного и беспроводного соединений), управлять питанием и т.д. Это инфраструктура для тестирования отдельных сервисов


3.1. Операторы и функции проверки условий

Из книги автора

3.1. Операторы и функции проверки условий В этом разделе вы узнаете об операторах, которые предназначены для создания условий отбора, а именно: об операторах, выполняющих сравнение двух или нескольких величин, и о логических операторах, позволяющих создавать


Игнорирование проверки соответствия правилам ВР 1.1

Из книги автора

Игнорирование проверки соответствия правилам ВР 1.1 В .NET 2.0 Web-сервисы XML автоматически проверяются на соответствие спецификациям базового профиля WSI версии 1.1 (ВР 1.1). В большинстве случаев это хорошо, поскольку позволяет создавать программное обеспечение с самыми


Отмена проверки соответствия правилам BP 1.1

Из книги автора

Отмена проверки соответствия правилам BP 1.1 Чтобы полностью отключить проверку соответствия BP 1.1 для Web-сервиса XML, определите в соответствующем файле Web.соnfig элемент‹conformanceWarnings›. ‹configuration›  ‹webServices›   ‹conformanceWarnings›    ‹remove name="BasicProfile1_1" /›  


4.4.4. Неблокирующие проверки исключающих семафоров

Из книги автора

4.4.4. Неблокирующие проверки исключающих семафоров Иногда нужно, не заблокировав программу, проверить, захвачен ли исключающий семафор. Для потока не всегда приемлемо находиться в режиме пассивного ожидания, ведь за это время можно сделать много полезного! Функция


Выполнение проверки базы данных

Из книги автора

Выполнение проверки базы данных Пров базы данных требует исключительного доступа к базе данных. Без исключительного доступа вы получите сообщение об ошибке:OBJECT имя-базы-данных IS IN OSEДля проверки базы данных просто введите команду:gfix -vПроверка будет молча отыскивать и


Выполнение проверки

Из книги автора

Выполнение проверки В первую очередь используются переключатели -v[alidate] и -f[ull] утилиты gfix для проверки структур записей и страниц. Процесс проверки сообщает о разрушенных структурах и освобождает неназначенные фрагменты записей или "осиротевших страниц" (т. е. страниц,


7.2. Операции проверки файлов

Из книги автора

7.2. Операции проверки файлов Возвращает true если...-eфайл существует-fобычный файл (не каталог и не файл устройства)-sненулевой размер файла-dфайл является каталогом-bфайл является блочным устройством (floppy, cdrom и т.п.)-cфайл является символьным устройством (клавиатура, модем,