Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие2013_09_28.doc
Скачиваний:
24
Добавлен:
20.05.2015
Размер:
2.72 Mб
Скачать

Основныетипы данных, операции и выражения

Все используемые в программе объекты (переменные, именованные константы, функции и др. ) должны быть предварительно определены (описаны); в описаниях указываются имена, их типы и, возможно, начальные значения. Константам тоже могут быть присвоены имена — синонимы констант. Имена (идентификаторы) могут состоять из букв латинского алфавита, цифр и символа подчеркивания "_", который считается буквой. Первый символ идентификатора должен быть буквой. Строчные и прописные буквы различаются, например Beta, beta и ВЕТА - различные имена. Число символов в имени практически не ограничено. В качестве имен переменных нельзя использовать зарезервированные слова вроде if, else, for, char, int и т.д. Все служебные слова должны быть набраны строчными (малыми) буквами.

Т и п ы д а н н ы х.

Тип данных определяет:

  • размер памяти, занимаемый определяемым объектом и его внутреннее (машинное) представление в памяти;

  • диапазон допустимых значений, которые может принимать определяемый объект;

  • множество допустимых операций, которые могут быть применимы к определяемому объекту.

В языке С++ используются следующие основные типы данных:

char (символьный, 1 байт);

wchar_t (расширенный символьный, 2 байта);

bool (логический, 1 байт);

int (целый , 2 или 4 байта);

float (вещественный или с плавающей точкой, 4 байта);

double (вещественный с двойной точностью, 8 байтов).

Существуют 4 модификатора типа, уточняющих внутреннее представление и диапазон значений основных типов:

short (короткий);

long (длинный);

signed (знаковый);

unsigned (беззнаковый).

Модификаторы signed, unsigned, short, long можно применять к целочисленным типам; типы signed и unsigned можно использовать с типом char, а модификатор long – с типом double. Допустимые комбинации базовых типов и модификаторов, а также размер и диапазоны изменения соответствующих данных приведены в следующей таблице.

Таблица 2.1. Размеры значений разных типов в байтах и диапазоны их изменения в 32-разрядной среде

Тип

Размер

в байтах

Диапазон изменения

char

1

-128 … 127

unsigned char

1

0 … 255

signed char

1

-128 … 127

int

4

-2 147 483 648 … 2 147 483 647

unsigned int

4

0 … 4 294 967 295

signed int

4

Аналогичен типу int

short int

2

-32 768 … 32 767

unsigned short int

2

0 … 65 535

signed short int

2

-32 768 … 32 767

long int

4

Аналогичен типу int

signed long int

4

Аналогичен типу signed int

unsigned long int

4

Аналогичен типу unsigned int

float

4

3.4Е-38 … 3.4Е+38

double

8

1.7Е-308 … 1.7Е+308

long double

10

3.4Е-4932 … 3.4Е+4932

bool

-

ИСТИНА или ЛОЖЬ

wchar_ t

2

0 … 65535

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

Ц е л ы е константы и константы с п л а в а ю щ е й т о ч к о й записываются в общепринятой для языков программирования форме:

13, -941, 0, 76; 13.035, 13Е+0, -1.76, 0.123е-2, 6.02Е23

В языке С/C++ существуют правила записи восьмеричных и шестнадцатеричных целых чисел: если число начинается с нуля, то это восьмеричная константа: 037, 0776; начальные 0Х или 0х указывают на шестнадцатеричное число: 0хf37, 0Х7FA.

Тип целочисленных констант определяется в соответствии с их видом; этот тип можно указать явно с помощью суффиксов L, l (long) и U, u (unsigned). Разрешается комбинировать оба суффикса в любом порядке, например:

125L, 0x75u, 137uL

Константа с плавающей точкой состоит из целой десятичной части, точки, дробной десятичной части и, быть может, степени, которая состоит из буквы Е (или е), за которой следует десятичный порядок. Перед показателем степени может стоять знак (+ или –). Либо десятичная точка, либо показатель, но не оба одновременно, могут быть опущены. Могут быть опущены либо целая, либо дробная части.

С и м в о л ь н а я к о н с т а н т а состоит из заключенного в одиночные кавычки символа, например ‘#'. Символы в языке С/С++ фактически являются целочисленными значениями из диапазона 0..255. Их числовое значение соответствует внутреннему (машинному) представлению символов в некотором принятом стандартном коде. Например, в коде ASCII значение символа ‘А’ равно 65, ‘b’ — 98, ‘2’ — 50. Символы, не имеющие графического изображения, и некоторые специальные символы, записывают следующим образом: ‘\n’ — новая строка, ‘\t’ — табуляция, ‘\0’ — нуль(пусто), ‘\\’ — обратная косая черта, ‘\’’ — апостроф, ‘ \” ‘ — кавычка, ‘\b’ — возврат на шаг, ‘\r’ —возврат каретки, ‘\f’ — перевод страницы. Такая комбинация выглядит как два символа, но фактически это один символ.

Кроме этого, любой символ может быть представлен последовательностью трёх восьмеричных ( ‘\ООО’ ) либо двух шестнадцатеричных ( ‘\xHH’ ) цифр. Например, символ ‘A’ (латинская буква) можно ещё записать как ’\101’ , либо ‘\x41’ .

С т р о к о в а я константа — это последовательность символов, заключенная в двойные кавычки, например "ИНТЕРЕСНОЕ \t СООБЩЕНИЕ\n" или "" (пустая строка). В конце каждой такой строки (в том числе и пустой) транслятор автоматически помещает нулевой символ \0.

Присвоение константам символических имен происходит, как уже отмечалось, с помощью препроцессорного утверждения #define либо с помощью описателя const. Например:

#define MAX 100

const int MAX = 100;

const char name[] = “********************” ;

К о н с т а н т ы л о г и ч е с к о г о типа в С++ могут принимать только значения true и false. Вместо них с успехом используются их машинные эквиваленты – целые константы 1 и 0 соответственно.

Тип void.. К основным типам, кроме перечисленных выше, относится особый тип – void. Множество значений этого типа пусто. Используется для указания пустого списка аргументов функции; для определения типа функции, не возвращающей значения в точку вызова и др.