Классификация типов связана с их разбиением на основные и производные типы. К основным относятся: void, char, int, float и double, а также их варианты с модификаторами short (короткий), long (длинный), signed (со знаком) и unsigned (без знака). Например, unsigned char, unsigned int, signed int (модификатор signed подразумевается по умолчанию и поэтому обычно не указывается).
Все типы, используемые в C++ Builder, можно разбить на четыре группы:
Название | Описание |
---|---|
Aggregate | структуры данных |
Array | массивы |
struct | структуры |
union | объединения |
class | классы |
Function | функции |
Scalar | скалярные |
Arithmetic | арифметические |
Enumeration | перечислимые |
Pointer | указатели |
Reference | ссылки |
void | отсутствие значения |
Основные типы в С++
Тип | Размер в байтах | Диапазон значений |
---|---|---|
char | 1 | от -128 до 126 |
unsigned char | 1 | от 0 до 255 |
short | 2 | от -32 768 до 32 767 |
unsigned short | 2 | от 0 до 65 535 |
enum | 2 | от -2 147 483 648 до 2 147 483 647 |
long | 4 | от -2 147 483 648 до 2 147 483 647 |
unsigned long | 4 | от 0 до 4 294 967 295 |
int | 4 | от -2 147 483 648 до 2 147 483 647 |
unsigned int | 4 | от 0 до 4 294 967 295 |
float | 4 | от 3.4*10-38 до 3.4*1038 |
double | 8 | от 1.7*10-308 до 1.7*10308 |
long double | 10 | от 3.4*10-4932 до 1.1*104932 |
bool | 1 | true или false |
Имеются также основные типы _int8, _intl6, _int32, _int64.
Следует отметить, что в C++ Builder, в отличие от некоторых других версий С++, булев тип bool реализован как отдельный тип, а не как псевдоним целого. Однако это не мешает при желании использовать в логических выражениях целые значения вместо булевых. При этом значение 0 расценивается как false, а любое ненулевое значение как true.
Производные типы включают в себя указатели и ссылки на какие-то типы, массивы каких-то типов, типы функций, классы, структуры, объединения. Эти типы считаются производными, поскольку, например, классы, структуры, объединения могут включать в себя объекты различных типов.
Можно выделить еще одну категорию типов порядковые, в которых значения упорядочены и для каждого из них можно указать предшествующее и последующее. К ним относятся целые, символы, перечислимые типы.
Типы данных указываются при объявлении любых переменных и функций. Например:
double а = 5.4, b = 2;
int с;
void F1(double А);
Пользователь может вводить в программу свои собственные типы. Объявления типов могут делаться в различных местах кода. Место объявления влияет на область видимости или область действия так же, как и в случае объявления переменных.
Синтаксис объявления типа
typedef определение типа идентификатор;
Здесь идентификатор это вводимое пользователем имя нового типа, а определение типа описание этого типа. Например, оператор:
typedef double At[101];
объявляет тип пользователя с именем Ar как массив из 10 действительных чисел. В дальнейшем на этот тип можно ссылаться при объявлении переменных. Например:
Ar А = (1,2,3,4,5,6,7,8,9,10);
Объявление типа с помощью typedef можно использовать и для создания нового типа, имя которого будет являться псевдонимом стандартного типа С++. Именно так в C++ Builder многие встроенные типы компонентов Object Pascal приведены к типам, характерным для С++. Эти переопределения типов содержатся в файле sysdefs.h. Например:
typedef bool Boolean;
typedef int Integer;
typedef short Smallint;
typedef unsigned char Byte;