Стефан Дэвис - С++ для чайников .
- Название:С++ для чайников .
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс. Компьютерное издательство Диалектика
- Год:2007
- Город:Москва
- ISBN:0-7645-6852-3, 978-5-8459-0723-3
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стефан Дэвис - С++ для чайников . краткое содержание
1
empty-line
4
С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Так же широко используются операторы &&( И ) и ||( ИЛИ ). Эти операторы обычно сочетаются с другими логическими операторами:
/* истинно, если 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. Выполнение логических операций
Программа запрашивает у пользователя два числовых значения и возвращает результат их сравнения. Вот пример работы программы:
Использование переменной типа bool
Введите значение 1: 5
Введите значение 2: 5
Значение 5 == 5 равно true
Press any key to continue...
«Специальное значениеendl вставляет символ перехода на новую строку. Разница междуendl и описанным в главе 2, "Премудрости объявления переменных", символом'\n' поясняется в главе 24, "Использование потоков ввода-вывода".»
[ Советы ]
Использование целых переменных в качестве логических...58
С++ не всегда имел тип bool . Ранее для хранения логических значений в С++ использовался тип int . Значение 0 рассматривалось как false , а все остальные — как true . Все логические операторы генерировали целочисленные значения 0 и 1, соответствующие значениям false и true .
В С++ осталась высокая степень совместимости типов bool и int , обеспечивающая поддержку старых программ. Например, если в только что рассмотренной программе удалить инструкцию cout.setf( cout.boolalpha ) ; , вывод программы будет следующим:
Использование переменной типа bool
Введите значение 1: 5
Введите значение 2: 5
Значение 5 == 5 равно 1
Press any key to continue...
Переменные типов bool и int могут вместе использоваться в выражениях языка. Например, следующий код совершенно корректен:
int n1 = 1 ;
int n2 = 2 ;
int n ;
n = ( n1 == n2 ) ;
Тем не менее в своих программах желательно использовать для хранения логических значений переменные специально предназначенного для этого типа bool .
Логические операции и действительные переменные...58
Переменные с плавающей точкой, как уже отмечалось, не могут использоваться для перечисления. Вы можете сказать: первый, второй, третий, четвёртый и т.д., так как соотношения между 1, 2, 3 абсолютно точно известны. Но нет никакого смысла говорить о номере 4.535887 в последовательности ( такой способ нумерации возможен лишь как обозначение чего-то между четвёртым и пятым, но не действительного значения номера, так как в любом сколь угодно малом отрезке их несчётное [ 9 ] множество ).
Тип float , представляющий в С++ действительные числа, не является перечислимым. Кроме того, в отличие от действительных чисел, числа с плавающей точкой имеют ограниченное количество разрядов, поэтому при использовании операторов сравнения с числами с плавающей точкой необходимо соблюдать осторожность. Рассмотрим следующий пример:
float f1 = 10.0 ;
float f2 = f1 / 3 ;
f1 == ( f2 * 3.0 ) ; /* Равны ли эти значения? */
__________________
9Более того, в данном случае это не красивое слово, а строгий математический термин. — Прим. ред.
_________________
58 стр. Часть 1. Первое знакомство с С++
Сравнивая начальное и полученное значения, мы не обязательно получим равенство. Действительные переменные, с которыми работает компьютер, не могут содержать бесконечное число значимых разрядов. Поэтому f2 равняется, например, 3.3333, а не 3 1/ 3. В отличие от математики, в компьютере число троек после точки ограничено. Умножив 3.3333 на 3, вы, вероятно, получите не 10.0, а 9.9999. Такой маленькой разницей может пренебречь человек, но не компьютер. Эта машина понимает под равенством исключительно точное равенство значений.
Читать дальшеИнтервал:
Закладка: