Книга: Язык Си - руководство для начинающих

ЛОГИЧЕСКИЕ ОПЕРАЦИИ

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

/* число символов */

/* подсчитывает не пустые символы */

main( )

{

int ch;

int charcount = 0;

while ((ch = getchar( )) != EOF)

if(ch !='  ' && ch ='n' && ch != 't') charcount++;

    printf(" Всего %d непустых символов. n", charcount);

}

     Так же как это обычно происходило в наших предыдущих программах, данная программа начинает свое выполнение с чтением символа и проверки, является ли он признаком конца файла. Дальше появляется нечто новое - оператор, использующий логическую операцию "и", обозначаемую &&. Смысл действий, осуществляемых оператором if в данном случае, можно пояснить следующим образом:

     Если прочитанный символ не пробел, И не символ "новая строка", И не символ табуляции, то происходит увеличение значения переменной charcount на единицу.

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

     В языке Си имеются три логические операции:

Операция Смысл
&& И
|| ИЛИ
! НЕ

Предположим, что expl и ехр2 - два простых условных выражения типа cat > rat или debt = = 1000. Тогда:

     1. expl && ехр2: истинно в том и только в том случае, когда оба выражения expl и ехр2 истинны.

     2. expl || ехр2: истинно в том случае, если какое-нибудь из выражений expl или ехр2 истинно или оба истинны.

     3. !expl: истинно, если выражение expl ложно, и наоборот.

     Ниже приведено несколько конкретных примеров:

     5 > 2 && 4 > 7: ложно, поскольку истинно только одно подвыражение.

     5 > 2 || 4 > 7: истинно, поскольку по крайней мере одно из подвыражений истинно.

     !(4 > 7): истинно, потому что 4 не больше 7.

Последнее выражение к тому же эквивалентно следующему:

4 < = 7.

     Если вы совсем не знакомы с логическими операциями или испытываете трудности при работе с ними, помните, что практика && время = = совершенство.

Оглавление книги


Генерация: 0.180. Запросов К БД/Cache: 0 / 2
поделиться
Вверх Вниз