Листинг 5. Проверка значений двух переменных

/*twovars.c*/main() { intdepents; floatincome; puts("Укажите сумму Вашего годового дохода"); scanf("%f", &income); puts("Пожалуйста, укажите количество иждивенцев"); scanf("%d", &depents); if (income < 20000 &&depents> 2) puts("Вы освобождены от уплаты подоходного налога"); }

В условии if здесь проверяются значения двух переменных: income и depents. Для того чтобы сообщение, записанное в инструкции if, оказалось выведенным на экран, значение переменной income должно быть меньше 20 тысяч долларов, И одновременно значение переменной depents должно быть больше двух. Если хотя бы одно из перечисленных условий не выполняется, например, количество иждивенцев равно одному или доход составляет 20001 доллар, функция puts() не будет выводить на экран сообщение об освобождении от уплаты налога.

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

if (taxable == 'Y' &&taxable == "y")

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

Для примера предположим, что налогом на предметы роскоши облагаются товары, цена которых находится в пределах от 40 тысяч до 60 тысяч долларов. Условие проверяется следующим образом:

if (cost>= 40000.00 &&cost<= 60000.00)

Для того чтобы выполнялась инструкция if, должны быть истинными оба условия одновременно, так как мы использовали оператор И. При этом цена товара должна быть в одно и то же время больше или равна 40000 и меньше или равна 60000 долларов, то есть находится в пределах определенных допустимых значений (рис.3).

Если в данном случае использовать оператор ИЛИ, то это приведет к ошибочному выполнению инструкции, так как любое значение переменной cost будет рассматриваться как удовлетворяющее условию. Напротив, если мы хотим


Рис. 3. Так можно узнать, находится ли число в границах определенных значений

определить, находится ли значение вне каких-то установленных границ значений, мы должны использовать именно оператор ИЛИ и поменять местами операторы «больше или равно» и «меньше или равно». При такой записи условие if будет проверять, выходит ли значение числа за указанные рамки, определяя, меньше это число или больше установленных ограничивающих значений:

if (income<= 20000.00 || income>= 60000.00) puts("Вы не относитесь к среднему классу");

Оператор отрицания называют унарным оператором, так как он работает только с одним объектом, а именно, с переменной или константой. Условие считается не выполненным (ложным) в том случае, когда значение выражения, стоящего в круглых скобках после if, равно0. При любом другом значении выражения, будь оно положительным или отрицательным, полагается, что условие выполнено. Например, следующие инструкции выводят на экран монитора сообщение: «Ошибка в расчете», так как переменная count имеет значение, равное0:

int count;count = 0;if (! count) puts("Ошибкаврасчете");

Такая запись условия в точности соответствует строке

if (count == 0)

Аналогичным образом, следующая инструкция выводит на экран сообщение: «Правильный результат», так как переменная count имеет значение, отличное от нуля:

int count;count = 1;if (count) puts("Правильныйрезультат");

Запись if (count) аналогична записи if (count!= 0), которая определяет, отличается ли значение переменной от нуля. В последующих главах вы узнаете, как используются унарные операторы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: