Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Логические  переменные Objective-C

0

Как  видите,  выражения  довольно  быстро  становятся  длинными  и  сложными.  Иногда бывает удобно поместить значение выражения в переменную с подходящим именем:

BOOL isNotLegal = !((truckWeight > 0.0) && (truckWeight < 40000.0)); if (isNotLegal) {

printf("Truck weight is not within legal range.\n");

}

Переменная, которая может принимать значения true и false, называется логической переменной. Традиционно программисты С всегда хранила логические значения в переменных типа int. Программисты Objective-С обычно используют для логических переменных типа BOOL, поэтому в приведенном фрагменте был выбран именно он. (Впрочем ВООL – всего лишь синоним для целого типа.) Чтобы использовать тип BOOL в функции С, необходимо включить соответствующий заголовок:

#include <objc/objc.h>

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

BOOL isNotLegal = ! ((truckWeight > 0.0) && (truckWeight < 40000.0)); if (isNotLegal)

printf ("Truck weight is not within legal range. \n") ;

Но если код состоит не из одной, а из нескольких команд, фигурные скобки обязательны

BOOL isNotLegal = !((truckWeight > 0.0) && (truckWeight < 40000.0)); if (isNotLegal) {

printf ("Truck weight is not within legal range. \n"); printf("Impound truck.\n");

}

Почему? Представьте, что мы убрали фигурные скобки

BOOL isNotLegal = ! ((truckWeight > 0.0) && (truckWeight < 40000.0)); if (isNotLegal)

printf( "Truck weight is not within legal range. \n"); printf( "Impound truck. \n");

В этом случае команда вторая команда с вызовом printf будет выполняться всегда, независимо от результата проверки. Когда компилятор не обнаруживает фигурную скобку после условия, он считает, что в команду if входит только следующая команда. Следовательно, вторая команда printf будет выполняться всегда. (А как же отступ? Отступы очень полезны для нас, людей, читающих код; для компилятора они не значат ничего.)

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии