Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Электронный конспект лекций_1.doc
Скачиваний:
5
Добавлен:
16.04.2019
Размер:
332.29 Кб
Скачать

6.2.Вещественные числа

Вещественные числа в C++ могут быть одного из трех типов: с одинарной точностью (float), с двойной точностью (double) и с расширен­ной точностью (long double):

float x;

double e = 2.9;

long double s;

В большинстве реализаций языка представление и диапазоны зна­чений соответствуют стандарту IEEE (Institute of Electrical and Electronics Engineers) для представления вещественных чисел. Именно в соответст­вии с этим стандартом в табл. 1 и приведены диапазоны значений веще­ственных чисел. Точность представления чисел составляет 7 десятичных значащих цифр для типа float, 15 значащих цифр для double и 19 для типа long double.

Вещественные числа записываются либо в виде десятичных дро­бей: 1.3, 3.1415, 0.0005, либо в виде мантиссы и экспоненты: 1.2Е-1, 0.12е0. Отметим, что обе предыдущие записи изображают одно и тоже число 0.12.

По умолчанию вещественная константа принадлежит к типу double.

Для вещественных чисел определены все стандартные арифмети­ческие операции: изменения знака (-), сложения (+), вычитания (-), умножения (*), деления (/) и изменения знака (-). В отличие от целых чисел, операция % не определена. Аналогично, все побитовые операции и сдвиги не при­менимы к вещественным числам; они работают только с целыми числами.

Вещественные числа можно сравнивать на равенство (= =), неравенство (!=), больше (>), меньше (<), больше или равно (>=) и меньше или равно (<=). В результате операции сравнения получается логическое значение истина или ложь.

Если арифметическая операция применяется к двум вещественным числам разных типов, то менее точное число преобразуется к более точному, то есть float преобразуется в double и double преобразуется к long double. Очевидно, что такое преобразование всегда можно выполнить без потери точности.

Если вторым операндом в операции с вещественным числом выступает целое число, то целое число преобразуется в вещественное представление.

Хотя любую целую величину можно представить в виде вещественного числа, при таком преобразовании возможна потеря точности (для больших чисел).

6.3.Логические значения

В языке C++ существует специальный тип bool для представления логических значений. Для величин этого типа существует только два возможных значения: true (“истина”) и false (“ложь”). Формат объявления логической переменной:

bool имя_переменной ;

Соответственно, существуют только две логические константы – true и false.

Для типа bool определены три стандартные логические операции: логическое И (&&), логическое ИЛИ (||) и НЕ (!).

Напомним, что логические значения получаются в результате операций сравнения, а также при преобразовании чисел в логические значения.

6.4.Символы

Символьный тип в языке C++ относится к целочисленным типам, однако запись символов имеет свои отличия.

Для работы с символами в языке C++ предусмотрены символьные типы (signed) char и unsigned char. Первый – это целое число со знаком, хранящееся в одном байте (его диапазон от -128 до 127), второй – беззнаковое однобайтовое число (его диапазон от 0 до 255). Эти типы чаще всего ис­пользуются для работы с символами, поскольку коды символов как раз помещаются в байт.

Существует несколько стандартов, опре­деляющих соответствие кодов символам. Для букв английского алфавита, цифр, знаков препинания и знаков операций используется стандарт ASCII, который определяет коды от 0 до 127. Для представления русских букв ис­пользуется стандарты, в которых русские буквы кодируются числами от 128 до 255 (или, соответственно, от -128 до -1). Таким образом, все символы могут быть представлены в одном байте (максимальное число символов, которое можно представить в одном байте – 255). Переменную символьного типа можно объявить так:

char с; // однобайтовое число со знаком

unsigned char u; // однобайтовое число без знака

Для записи символьных констант используются одиночные кавычки (апострофы). Примеры:

'S' '&' '8' 'ф'

Числовым значением символьной константы является код соответствующего симво­ла, принятый в используемой операционной системе.

Поскольку, несмотря на двойственность своей природы, символы – это, прежде всего, целые числа, к ним применимы все операции, определенные для целых чисел. Поэтому вполне допустимо использование символов в выражениях:

'F' + 1

'а' < 23

а также присваивания им числовых значений:

char c = 45;

Символы, отображающие 26 больших (заглавных) букв английского алфавита от 'A' до 'Z' представлены последовательными возрастающими числовыми кодами, причем код символа 'B' больше кода символа 'A' на 1, а код символа 'Z' – на 25. Точно так же упорядочены коды символов, отображающих 26 малых (строчных) английских букв от 'a' до 'z', причем коды малых букв располагаются в таблице позже кодов больших букв. Разница между кодами одинаковых малых и больших букв ('a'-'A') составляет фиксированное значение 32, что в двоичной записи кодов означает наличие единицы в старшем, незнаковом разряде. Упорядочены также и коды символов, отображающих цифры от 0 до 9 (код символа '9' на 9 больше кода символа '0').

В кодировке ASCII два следующих оператора эквивалентны:

char с = 68; // 68 – код буквы D

char с = 'D';

Первый из них инициализирует символьную переменную c числовым значением 68. Второй присваивает этой переменной код латинской буквы D, который в кодировке ASCII равен 68.

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

\b возврат на один символ назад

\n новая строка

\r возврат каретки

\t горизонтальная табуляция

\' апостроф

\" двойные кавычки

\\ обратная дробная черта

Символьная константа может быть представлена и с использованием ее числового кода. Для этого ее восьмеричный или шестнадцатеричный (с префиксом 'x') числовой код записывается после обратной дробной черты:

const char zero = '\0'; // инициализация нуль-символом

const unsigned char bitmask = '\xFF';

cout << 'A' << (char)65 << '\101' << '\x41' << endl;// вывод AAAA

Алфавит большинства европейских языков мо­жет быть представлен однобайтовыми числами (то есть кодами в диапазоне от 0 до 255). В большинстве кодировок принято, что первые 127 кодов отводятся для символов, входящих в набор ASCII: ряд специальных сим­волов, латинские заглавные и строчные буквы, арабские цифры и знаки препинания. Вторая половина кодов – от 128 до 255 отводится под буквы того или иного языка. Фактически вторая половина кодовой таблицы ин­терпретируется по-разному, в зависимости от того, какой язык считается "текущим". Один и тот же код в разных кодировках может соответствовать различным знакам или буквам.