n == 0 ;

«Не перепутайте оператор равенства== ( двойное равно ) с оператором присвоения= ( одинарное равно ). Эта ошибка очень распространена, к тому же компилятор С++ вообще не считает её ошибкой, что делает её вдвойне опасной!»
[ Атас! ]
n = 0 ; /* Программист хотел написать, что n == 0 */
Широко распространены в повседневной жизни операторы "больше" ( > ) и "меньше" ( < ). Приведём пример логического выражения, возвращающего значение true .
int n1 = 1 ;
int n2 = 2 ;
n1 < n2

«Операторы "больше" и "меньше" внешне очень похожи, и поэтому их легко перепутать. Чтобы этого не случилось, помните, что оператор-стрелочка принимает значениеtrue в том случае, когда из двух сравниваемых значений он указывает на меньшее.»
[ Советы ]
С помощью операторов > и < можно найти случаи, когда n1 больше или меньше n2 , однако при этом игнорируется возможность равенства их значений. Операторы "больше или равно" ( >= ), "меньше или равно" ( <= ), в отличие от только что рассмотренных, учитывают и эту возможность.
Так же широко используются операторы &&( И ) и ||( ИЛИ ). Эти операторы обычно сочетаются с другими логическими операторами:
/* истинно, если n2 больше n1 и меньше n3 */
( n1 < n2 ) && ( n2 < n3 ) ;
В качестве ремарки: оператор "больше или равно" можно определить как [ 8 ]
n1 <= n2 эквивалентно ( n1 < n2 ) || ( n1 == n2 )
______________
8В качестве ещё одной ремарки: операторы сравнения вообще достаточно взаимозаменяемы. Так, например, ( a == b ) эквивалентно ( ! ( a>b ) && ! ( a . — Прим. ред.
_________________
56 стр. Часть 1. Первое знакомство с С++
Хранение логических значений...57
Результат логической операции может быть присвоен переменной типа bool :
int n1 = 1 ;
int n2 = 2 ;
bool b ;
b = ( n1 == n2 ) ;
Это выражение показывает разницу между операторами присвоения и сравнения. Его можно описать следующими словами: "Сравни содержимое переменных n1 и n2 и сохрани результат сравнения в переменной b ".

«Оператор присвоения имеет наиболее низкий приоритет, поэтому оператор сравнения будет выполнен до присвоения. Скобки в этой ситуации излишни, и выражениеb = n1 == n2 эквивалентноb = ( n1 == n2 ) . Обратите также внимание на различие операторов присвоения и сравнения.»
[ Советы ]
Вот пример программы, демонстрирующей использование переменной типа bool :
/* BoolTest — сравнение данных, вводимых с клавиатуры, и сохранение результата в переменной типа bool */
#include
#include
#include
using namespace std ;
int main ( int nNumberofArgs , char* pszArgs[ ] )
{
setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */
cout << "Использование переменной типа bool\n" ;
/* Устанавливаем текстовый формат для вывода логических значений */
cout.setf( cout.boolalpha ) ;
/* Инициализируем аргументы */
int nArg1 ;
cout << "Введите значение 1: " ;
cin >> nArg1 ;
int nArg2 ;
cout << " Введите значение 2: " ;
cin >> nArg2 ;
bool b ;
b = nArg1 == nArg2 ;
cout << "Значение " << nArg1
<< " == " << nArg2
<< " равно " << b
<< endl ;
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ;
return 0 ;
}
Инструкция cout.setf( cout.boolalpha ) ; обеспечивает вывод логического значения в виде строки " true " или " false ", а не в виде 1 или 0 , как принято по умолчанию.
_________________
57 стр. Глава 4. Выполнение логических операций
Программа запрашивает у пользователя два числовых значения и возвращает результат их сравнения. Вот пример работы программы:

Читать дальше