Об условиях в операторе if

Условие оператора if может быть сколь угодно сложным выражением. Можно было бы сказать, что это выражение должно быть “логическим”, но в языке С (не в С++, а в С) нет логического типа данных, поэтому условие для большей общности сделали целого типа. Как уже говорилось, выражение считается ложным (false), если его значением является нуль, и истинным (true), если значение ненулевое. В С++ введен логический тип данных bool. Но переменные логического типа конвертируются к целому типу true (равно 1) или false (равно 0), если они используются в условии.

Вот несколько примеров условий оператора if:

if (x) DoSomething();

//Если х не равно нулю, то выполняется функция DoSomething().

if (!x) DoAnotherThing();

//Если х равно нулю, то выполняется функция DoAnotherThing().

if (b = = с) DoAnotherThing();

/*Если b равно с (логическое сравнение), то выполняется функция DoAnotherThing().*/

if (b!= с) DoSomething();

//Если b не равно с, то выполняется функция DoSomething().

if ((key = getch()) = = 'q') DoQuit();

/*Сохранить код клавиши в key и,если он равен ' q ', выполнить функцию DoQuit().*/

if (a >= b && a <= c) DoSomething();

//Если а лежит между b и с, выполнить функцию DoSomething().

При записи условия используются логические операции (записаны в порядке убывания приоритета):

! – логическое НЕ (инверсия);
< – меньше;
<= – меньше или равно;
> – больше;
>= – больше или равно;
= = – равно;
!= – логическое И;
&& – логическое И;
|| – логическое ИЛИ.

! – логическое НЕ (инверсия, отрицание), дает в результате false (0), если операнд true(≠ 0) или 1 если операнд false (0). Операнды в этой операции могут иметь тип bool, int, вещественный.

Пример:

bool x,y;

y=true;

x=!y;

В результате: х будет присвоено значение false (0).

Операции отношения (<, <=, >, >, = =.! =) сравнивают первый операнд со вторым. Операнды могут быть арифметического типа (int, float, double) или указателями. Результатом операции является значение true или false (любое значение, не равное нулю, интерпретируется как true). Операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции сравнения.

ПРИМЕЧАНИЕ: обратите внимание на разницу между операцией проверки на равенство (==) и операцией присваивания (=), результатом которой является значение, присвоенное левому операнду.

Пример:

a= =0;

логическое значение этого выражения true, если а равно 0, иначе false.

a=0;

логическое значение этого выражения всегда false.

Логические операции && (И) и || (ИЛИ). Операнды логических операций И (&&) и ИЛИ (||) могут иметь арифметический тип или быть указателями, при этом операнды в каждой операции могут быть различных типов. Преобразования типов не производятся, каждый операнд оценивается с точки зрения его эквивалентности нулю (операнд, равный нулю, рассматривается как false, не равный нулю – как true). Результатом логической операции является true или false. Результат операции логическое И имеет значение true только если оба операнда имеют значение true. Результат операции логическое ИЛИ имеет значение true, если хотя бы один из операндов имеет значение true. Логические операции выполняются слева направо. Если значения первого операнда достаточно, чтобы определить результат операции, второй операнд не вычисляется.

Примеры:

a>b && c<d

если одновременно а больше b и с меньше d, то выражение равно true, иначе false.

a>b || c<d

если а больше b или с меньше d, то выражение равно true, иначе false.

Можно было бы записать (a>b)&&(c<d), но в этом нет необходимости, поскольку приоритет операций > и < выше чем && и ||.


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



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