732______ ________________________Часть !1. Программирование на C++

ранда. Отрицания значения True (истинно) есть False (ложно) и наоборот, не False есть True. Она также применяется к значениям указателей, при этом считается, что нулевое значение указателя есть false, а любое ненулевое — true.

Общая форма записи одноместной операции выглядит так:

одноместная_операция операнд

Применим эту форму записи к операции !:

char *p = О;

if( !р) // проверка на истинность

Вы видите, что указатели в C++ можно использовать в условных выражениях. Также в них можно употреблять логические (булевы) значения, целые числа и выражения. То что принимает нулевое значение, интерпретируется как ложное условие, а все, что не ноль, считается истиной. При подстановке вместо р его логического эквивалента "ложь" вышеприведенное выражение принимает вид "если (не ложь)"; не ложно есть истинно.

int а = 5;

if( !а) // условие ложно

Вспоминая, что в условных выражениях ненулевые значения считаются истинными, увидим, что в вышеприведенном выражении "если (не истина)" условие является ложным.

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

int num = 10;

num++; // то же, что num = num + 1 или num += 1 --num; // то же, что num = num — 1 или num -= 1

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

Одноместная операция отрицания обозначается тильдой (~) и производит побитовое отрицание (или дополнение) операнда. Дополнение к -1

int а = -1;

а = ~а;

дает в результате 0;

Операции + и — имеют как одноместную, так и двухместную формы. Одноместная форма операции плюс (+5) является избыточной, поскольку по