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

50 Глава 2

ных, которые не являются частью ISO/ANSI С++, и позднее в этой главе я расскажу о них.

Как часть объектно-ориентированных аспектов языка, предусмотрена возмож- ность определения ваших собственных типов данных, и конечно, разнообразные би- блиотеки, поставляемые с Visual С++ 2005 также определяют свои типы данных. Но пока мы ограничимся элементарными числовыми типами данных, представленными в ISO/ANSI С++. Фундаментальные типы подразделяются на три категории — типы, содержащие целые числа, типы, содержащие не целочисленные значения, и тип void, указывающий пустое множество значений или отсутствие типа.

Целочисленные переменные

Как уже говорилось, целочисленные переменные — это переменные, которые со- держат только значения целых чисел. Количество игроков футбольной команды — целое число, по крайней мере, в начале игры. Вы уже знаете, что целочисленные переменные можно объявлять с ключевым словом int. Переменные типа int зани- мают 4 байта памяти, и могут сохранять как положительные, так и отрицательные целые значения. Верхний и нижний пределы значений переменных типа int соот- ветствуют максимальному и минимальному двоичному значению со знаком, которое может быть представлено 32 битами. Верхний предел переменной типа int — 231 - 1,

что равно 2 147 483 647, а нижний предел (231), что соответствует -2 147 483 648.

Ниже показан пример определения переменной типа int.

В Visual С++ 2005 ключевое слово short также определяет целые переменные, но занимающие 2 байта в памяти. Ключевое слово short эквивалентно short int, и вы можете определить две переменных типа short с помощью следующих операторов:

Обе переменных относятся к одному и тому же типу, потому что short означает то же самое, что short int. Здесь я использовал обе формы названия типа, чтобы продемонстрировать их применение, но при написании программ лучше ограничи- ваться одним вариантом, и short встречается более часто.

В С++ также предусмотрен другой целочисленный тип — long, который также можно записывать как long int. Вот как объявляются переменные типа long:

Эти операторы объявляют переменные bigNumber и largeValue с начальными значениями 1000000 и 0 соответственно. Буква L, добавленная в конец литералов, указывает на то, что это — целые типа long. Для той же цели можно также применять и прописную букву 1, но ее недостаток в том, что ее легко спутать с цифрой 1. Целые литералы без добавленной буквы L имеют тип int.

При написании больших чисел в программе вы не должны вставлять в них запятые или про- белы в качестве разделителей групп. В тексте можно написать 12,245,678либо 12 245 678, но в коде программы следует писать 12345678.

Целочисленные переменные, объявленные как long, в Visual С++ 2005 занимают 4 байта, и могут принимать значения от -2 147 483 648 до 2 147 483 647. Тот же диа- пазон могут принимать переменные типа int.

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

В других компиляторах С++ переменные типа long (то же самое, что и тип long int) могут отличаться от типа int, поэтому, если вы собираетесь компилировать свои программы в других средах, не полагайтесь на то, что long и int эквивалентны. При написании действительно переносимого кода вы даже не должны рассчитывать на то, что int занимает 4 байта (например, в старых 16-разрядных версиях Visual С++ переменные int были двухбайтными).

Символьные типы данных

Тип данных char служит двум целям. Он специфицирует однобайтную пере- менную, в которой можно сохранять целые числа в пределах определенного диапа- зона значений, или же код отдельного символа ASCII (American Standard Code for Information Interchange — американский стандартный код обмена информацией). Набор кодов символов ASCII приведен в приложении Б. Вы можете объявить пере- менную char с помощью следующего оператора:

Этот код объявляет переменную по имени letter, инициализированную констан- той 1 А1. Обратите внимание, что значение указывается как отдельный символ в оди- ночных кавычках, а не в двойных, которые вы использовали ранее для определения строк символов с целью отображения на экране. Строка символов — это последова- тельность значений типа char, которая сгруппирована в единое целое, называемое массивом. Массивы и обработка строк в С++ рассматриваются в главе 4.

Поскольку символ 'А' в кодировке ASCII представлен десятичным значением 65, вы могли бы написать этот оператор следующим образом:

Это дало бы тот же результат, что и предыдущий оператор. Диапазон целых, которые могут быть сохранены в переменных типа char, в Visual С++ составляет от -128 до 127.

Обратите внимание, что стандарт ISO/ANSI С++ не требует, чтобы тип char представ- лял однобайтные целые со знаком. Это выбор реализации компилятора: представлять char как целые со знаком в диапазоне от-128 до 127либо как целые без знака в диапазоне от 0 до 255. Следует иметь это в виду, если вы собираетесь переносить свой код С++ в другую среду.

Тип wchar_t назван так, поскольку это расширенный символьный тип (wide char type), и переменные этого типа сохраняют 2-байтные символьные коды со значения- ми от 0 до 65 535. Ниже показан пример определения переменной типа wchart.

Этот оператор определяет переменную letter, инициализированную 16-битным кодом буквы Z. Символ L, предшествующий символьной константе ' Z ', сообщает компилятору, что это 16-битное значение кода символа.

Для инициализации переменных char (как и других целых типов) вы также мо- жете использовать шестнадцатеричные константы, что во многих случаях удобнее. Шестнадцатеричное число записывается с применением стандартного представления шестнадцатеричных цифр: от 0 до 9 и от А до F (или от а до f), означающие в деся- тичном эквиваленте цифры от 0 до 15. Кроме того, они предваряются сочетанием Ох (или ОХ) для того, чтобы отличать их от десятичных значений. Таким образом, чтобы получить тот же результат, вы могли бы переписать оператор, приведенный выше, следующим образом: