Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A.doc
Скачиваний:
36
Добавлен:
09.04.2015
Размер:
5.6 Mб
Скачать

52 Глава 2

Не записывайте десятичные целочисленные значения с ведущим нулем. Компилятор интер- претирует их как восьмеричные, поэтому значение, записанное как 065, равно 53 в десятич- ной нотации.

Обратите также внимание, что в Windows ХР имеется утилита Character Map (Таб- лица символов), которая позволяет находить символы в любых шрифтах, доступных в Windows. Она показывает коды символов в шестнадцатеричном виде и сообщает, на какие клавиши нужно нажать для их ввода. Утилиту Character Map можно найти, если щелкнуть на кнопке Start (Пуск) и заглянуть в папку System Tools (Системные), находящуюся внутри папки Accessories (Стандартные).

Модификаторы целочисленных типов

Переменные целочисленных типов char, int, short или long сохраняют по умол- чанию целые значения со знаком (signed), поэтому вы можете применять их как для хранения положительных, так и отрицательных значений. Это объясняется тем, что для этих типов по умолчанию принят модификатор типа signed. Поэтому когда вы пишете int или long, то это означает signed int или signed long соответственно.

Вы также можете использовать ключевое слово signed отдельно для специфика- ции типа переменной. В этом случае оно означает signed int, например:

Но такое написание не очень распространено, и я предпочитаю применять int, что выглядит более очевидно.

Диапазон значений, которые могут быть сохранены в переменной типа char, на- ходится в пределах от -128 до +127, что совпадает с диапазоном допустимых значе- ний переменных типа short char. Но как это ни прискорбно, тип char и тип signed char трактуются как разные типы, поэтому вы не должны допускать ошибку, думая, что это одно и то же.

Если вы уверены, что вам не нужно хранить в переменной отрицательные зна- чения (например, если собираетесь записывать в нее количество миль, которые вы проезжаете за рулем в неделю), то вы можете специфицировать переменную как unsigned:

Минимальное значение, которое можно записать в переменную mileage, равно нулю, а максимальное — 4 294 967 295 (то есть 232 - 1). Сравните это с диапазоном от -2 147 483 648 до 2 147 483 647 для signed long. Один бит, который в перемен- ных signed служит для указания знака, в unsigned является частью числового значе- ния. Как следствие, переменные unsigned имеют больший диапазон положительных значений, но не могут представлять отрицательных. Обратите внимание на букву U (или и), добавленную к константе unsigned. В предыдущем примере я также добавил к ней L, чтобы указать, что константа — long. Вы можете использовать эти симво- лы-модификаторы констант в любом регистре и любой последовательности. Однако при указании таких значений желательно придерживаться какого-то согласованного стиля.

Вы также можете применять в качестве спецификатора типа unsigned отдельно, что подразумевает unsigned int.

Помните, что и signed, и unsigned ключевые слова, поэтому их нельзя применять в качестве имен переменных.

Данные, переменные и вычисления 53

Булевский тип

Булевские переменные — это такие переменные, которые могут хранить только два значения: true и false. Тип таких логических переменных называется bool, по имени Джорджа Буля (Gerorge Boole), который разработал булеву алгебру. Тип bool трактуется как целый. Булевские переменные также называют логическими перемен- ными. Переменные типа bool используются для сохранения результата проверок, ко- торые могут принимать значения либо "истина" (true), либо "ложь" (false), напри- мер, как в случае проверки равенства одного значения другому.

Имя переменной типа bool объявляется с помощью следующего оператора:

Конечно, вы можете сразу инициализировать переменные типа bool при их объ- явлении:

Вы обнаружите, что достаточно часто в коде можно встретить значения TRUE и FALSE как значения числовых типов — в частности, int. Это наследие тех времен, когда в С++ еще не был реализован тип bool, и для представления логических значений обычно применялись переменные типа int. При этом нулевые значения трактовались как "ложь", а ненулевые— как "истина Символы TRUE и FALSE все еще применяются в MFC, где они представляют ненулевые целые и 0, соответственно. Обратите внимание, что TRUE и FALSE, записанные заглавными буквами, не являются ключевыми словами в С++; это просто символы, опреде- ленные внутри MFC. Помните также, что TRUE и FALSE не являются допустимыми значе- ниями типа bool, а потому не путайте TRUE и true.

Типы с плавающей точкой

Числовые переменные, не относящиеся к целым, хранятся как числа с плавающей точкой. Число с плавающей точкой может быть выражено в виде десятичного значе- ния наподобие 112,5 либо в экспоненциальном виде, таком как 1Д25Е2, где десятич- ная часть умножается на 10 в степени, указанной после Е (экспонента). Таким обра- зом, последнее число — это 1Д25х102, что равно 112,5.

Константы с плавающей точкой должны включать десятичную точку, либо экспоненту, либо и то, и другое. Если вы записываете числовое значение без них, то получаете целое.

Вы можете специфицировать переменную с плавающей точкой, используя ключе- вое слово double, как в следующем операторе:

double in_to__mm = 25.4;

Переменная типа double занимает 8 байт памяти и сохраняет значения, точность которых определяется примерно 15 десятичными знаками. Диапазон их значений на- много шире, чем можно выразить 15-ю знаками — начиная от 1,7х10-308 и заканчивая 1,7х10308, положительные и отрицательные.

Если вам не требуется 15-значная точность и не нужны очень большие диапазоны значений, которые обеспечивает тип double, можете воспользоваться ключевым сло- вом float для объявления переменных с плавающей точкой, занимающих 4 байта.