640_____________________________________________Глава 11

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

Применять операции <, <=, >, >= к указателям имеет смысл только если оба
операнда указывают на элементы одного массива.

Операции === и 1= могут применяться к указателям на любые объекты. В этом
случае они вернут соответственно true и false, только если указатели указывают
на один и тот же объект.

Следует предостеречь от довольно распространенной ошибки: случайного при-
менения вместо операции эквивалентности (==) операции присваивания (=). На-
пример, если вы по ошибке вместо оператора

if(A==2) . ..;

написали оператор
if'(A =2) . . .;

то это не будет расценено как синтаксическая ошибка. Дело в том, что в C++ любое
выражение, имеющее некоторое значение, может использоваться в условных опе-
раторах, в частности, в if. Если значение выражения 0, то оно трактуется как fal-
se. Любое другое значение трактуется как true. Поэтому результат операции А = 2
будет трактоваться как true и независимо того, чему было равно значения А до вы-
полнения этого ошибочного оператора, условие в операторе if всегда будет считать-
ся выполненным. К тому же эта ошибка приведет к несанкционированному изме-
нению значения А.

К счастью, компилятор C++Builder замечает подобные недоразумения и при
записи в операторе if операции присваивания на всякий случай делает замечание:

«Possibly incorrect assignment» (Возможно некорректное присваивание). Это не
ошибка, а замечание, так что если вы не обратите внимание на это замечание, то
потратите потом много времени на поиск ошибки в программе.

Хороший стиль программирования ————————————————————————

Не пропускайте ни одного замечания компилятора, не проанализировав текст и не найдя
причины, вызвавшей замечание. Это один из залогов построения надежного программ-."-
обеспечения.

11.7.5 Логические операции

Логические операции принимают в качестве операндов выражения скалярных
типов и возвращают результат булева типа: true или false (0).

Обозначение           Операция             ' Пример

i ! __ ____ ____ ___ Отрицание              i'-^

&&_______________Логическое И________,А && В_________

jj________________Логическое ИЛИ______\А\\ В     ______

Унарная операция логического отрицания (!) возвращает true, если операнд
возвращает ненулевое значение. Таким образом, выражение !А эквивалентно вы-
ражению А == О.

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