Страница 17 из 82
Основные типы C++ Основные типы в C++ подразделяются на две группы: целочисленные типы и типы с плавающей точкой (для краткости их будем называть плавающими типами). Это арифметические типы. В C++ нет жёсткого стандарта на диапазоны значений арифметических типов (в стандарте языка оговариваются лишь минимально допустимые значения). В принципе, эти диапазоны определяются конкретной реализацией. Обычно выбор этих характеристик диктуется эффективностью использования вычислительных возможностей компьютера. Зависимость языка от реализации создаёт определённые проблемы переносимости. C++ остаётся машинно-зависимым языком. К целочисленным типам относятся типы, представленные следующими именами основных типов: char short int long
Имена целочисленных типов могут использоваться в сочетании с парой модификаторов типа: signed unsigned
Эти модификаторы изменяют формат представления данных, но не влияют на размеры выделяемых областей памяти. Модификатор типа signed указывает, что переменная может принимать как положительные, так и отрицательные значения. Возможно, что при этом самый левый бит области памяти, выделяемой для хранения значения, используется для представления знака. Если этот бит установлен в 0, то значение переменной считается положительным. Если бит установлен в 1, то значение переменной считается отрицательным. Модификатор типа unsigned указывает, что переменная принимает неотрицательные значения. При этом самый левый бит области памяти, выделяемой для хранения значения, используется так же, как и все остальные биты области памяти - для представления значения. В ряде случаев модификаторы типа можно рассматривать как имена основных типов. Здесь также многое определяется конкретной реализацией. В версиях Borland C++ данные типов, обозначаемых как signed, short и int в памяти занимают одно и то же количество байтов. Особое место среди множества основных целочисленных типов занимают перечисления, которые обозначаются ключевым словом enum. Перечисления представляют собой упорядоченные наборы целых значений. Они имеют своеобразный синтаксис и достаточно специфическую область использования. Их изучению будет посвящён специальный раздел. Здесь также многое зависит от реализации. По крайней мере, для Borland C++ 4.5, основные характеристики целочисленных типов выглядят следующим образом: Тип данных | Байты | Биты | Min | Max | signed char | 1 | 8 | - 128 | 127 | unsigned char | 1 | 8 | 0 | 255 | signed short | 2 | 16 | -32768 | 32767 | enum | 2 | 16 | -32768 | 32767 | unsigned short | 2 | 16 | 0 | 65535 | signed int | 2 | 16 | -32768 | 32767 | unsigned int | 2 | 16 | 0 | 65535 | signed long | 4 | 32 | -2147483648 | 2147483647 | unsigned long | 4 | 32 | 0 | 4294967295 | К плавающим типам относятся три типа, представленные следующими именами типов, модификаторов и их сочетаний: float double long double
Как и ранее, модификатор типа входит в число имён основных типов. Плавающие типы используются для работы с вещественными числами, которые представляются в форме записи с десятичной точкой, так и в "научной нотации". Разница между нотациями становится очевидной из простого примера, который демонстрирует запись одного и того же вещественного числа в различных нотациях. 297.7 2.977*10**2 2.977E2
и ещё один пример… 0.002355 2.355*10**-3 2.355E-3
В научной нотации слева от символа E записывается мантисса, справа - значение экспоненты, которая всегда равняется показателю степени 10. Для хранения значений плавающих типов в памяти используется специальный формат представления вещественных чисел. Этот формат называется IEEE форматом. Ниже представлены основные характеристики типов данных с плавающей точкой (опять же для Borland C++ 4.5): Тип данных | Байты | Биты | Min | Max | float | 4 | 32 | 3.4E-38 | 3.4E+38 | double | 8 | 64 | 1.7E-308 | 1.7E+308 | long double | 10 | 80 | 3.4E-4932 | 3.4E+4932 | Подведём итог. Имена типов данных и их сочетания с модификаторами типов используются для представления данных различных размеров в знаковом и беззнаковом представлении: char signed char unsigned char short signed short unsigned short signed unsigned short int signed short int unsigned short int int signed int unsigned int long signed long unsigned long long int signed long int unsigned long int
Все эти типы образуют множество целочисленных типов. К этому множеству также относятся перечисления. А вот сочетания имён типов и модификаторов для представления чисел с плавающей точкой: float double long double
Вот и всё об основных типах. Помимо основных типов в C++ существуют специальные языковые средства, которые позволяют из элементов основных типов создавать новые, так называемые производные типы. |