Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Сравнение: операции и выражения отношений






Поскольку циклы while часто полагаются на проверочные выражения, которые делают сравнения, эти выражения сравнения заслуживают более детального рассмотрения. Такие выражения называются выражениями отношений, а операции, которые в них появляются — операциями отношений. Мы уже пользовались несколькими такими операциями; в табл. 6.1 приведен полный список операций отношений в С. Здесь раскрыты почти все возможности в плане взаимоотношений между числами.

Таблица 6.1. Операции отношений

Операция Описание
< Меньше
< = Меньше или равно
== Равно
> = Больше или равно
> Больше
! = Не равно

 

Операции отношений применяются для построения выражений отношения, используемых в операторах while и в других операторах языка С, которые мы будем обсуждать позже. Эти операторы проверяют истинность или ложность значения. Ниже показаны три не связанных между собой оператора, которые содержат примеры выражений отношений. Мы надеемся, что их смысл должен быть понятен.

 

while (number < 6)

{

printf (" Число слишком мало\n");

scanf(" %d", & number);

}

while (ch! = ‘$’)

{

count++;

scanf(" %c", & ch);

}

while (scanf(" %f", & num) == 1)

sum = sum + num;

 

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

Операции отношений могут также применяться с числами с плавающей запятой. Однако имейте в виду, что при сравнении чисел с плавающей вы должны использовать только операции < и >. Это объясняется тем, из-за ошибок округления два числа могут оказаться неравными, хотя логически они должны быть равны. Например, совершенно очевидно, что произведение чисел 3 и 1/3 равно 1.0. Но если выразить число 1/3 в виде десятичной дроби с шестью значащими цифрами, то произведением будет.999999, что не равно в точности 1. Функция fabs (), объявленная в заголовочном файле math.h, может быть удобной при проверках, в которых участвуют числа с плавающей запятой. Эта функция возвращает абсолютное значение величины с плавающей запятой, т.е. значение без алгебраического знака. Например, с помощью кода, подобного показанному в листинге 6.5, можно проверить, насколько число близко к желаемому результату.

Листинг 6.5. Программа cmpflt.c

// cmpflt.c -- сравнение чисел с плавающей запятой

#include < math.h>

#include < stdio.h>

int main(void)

{

const double ANSWER = 3.14159;

double response;

printf(" Каково значение числа pi? \n");

scanf(" %lf", & response);

while (fabs(response - ANSWER) > 0.0001)

{

printf(" Try again! \n");

scanf(" %lf", & response);

}

printf(" Достаточно близко! \n");

return 0;

}

В цикле продолжается уточнение ответа до тех пор, пока разница между ответом и корректным значением не окажется в пределах 0.0001:

Каково значение числа pi?

3.14

Введите значение еще раз.

3.1416

Достаточно близко!

Каждое условное выражение получает оценку “истина” или “ложь” (но не “может быть").

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.