Базовые типы данных
В Си стандарта ANSI классификация типов имеет следующий вид, также указана размерность переменной типа в оперативной памяти:
• целые:
– беззнаковые :
• unsigned char – переменная типа занимает в памяти 8 бит;
• unsigned short – 16 бит;
• unsigned int - 32 бита (в Win32);
• unsigned long – 32 бита (в Win32);
– знаковые:
• char – 8 бит;
• short – 16 бит;
• int - 32 бита (в Win32);
• long – 32 бита (в Win32);
• вещественные:
• float – 32 бита;
• double – 64 бита;
• long double – 80 бит.
Назначение и диапазоны стандартных типов представлено в таблице 1.
Таблица 1 – Назначение и диапазоны стандартных типов
Тип данных | Размер, бит | Диапазон значений | Примечание -назначение типа |
unsigned char | 0...255 | Небольшие целые числа без знака и коды символов | |
char | -128...127 | Небольшие целые числа со знаком и ASCII-коды | |
unsigned short | 0...65535 | Целые числа без знака | |
short | -32768...32767 | Целые числа со знаком | |
unsigned int | 0...4294967295 | Большие целые без знака | |
int | -2147483648... ...2147483647 | Большие целые со знаком | |
unsigned long | 0...4294967295 | Большие целые без знака | |
long | -2147483648... ...2147483647 | Большие целые со знаком | |
float | 3.4Е-38…... 3.4Е+38 | Научные расчеты (7 значащих цифр) | |
double | 1.7Е-308... …..1.7Е+308 | Научные расчеты (15 значащих цифр) | |
long double | 3.4Е-4932... ...1.1Е+4932 | Финансовые расчеты (19 значащих цифр) |
Следует отметить особенность типа char (unsigned char) в языке Си. Язык Си язык со слабой типизацией, поэтому символьный тип используется двояко. С одной стороны он может использоваться для хранения кодов символов в кодировке ASCII, а с другой стороны, для хранения целых чисел в заданном диапазоне.
Кроме данных типов в Си существует перечисляемый тип, который задается следующим образом:
enum <имя_типа> {
<имя1>[=<инициализатор1>],
<имя2>[=<инициализатор2>],
……………….
<имяN>[=<инициализаторN>] };
<имя1>, <имя2>, …, <имяN> -выступают далее в качестве констант, по умолчанию первая константа инициализируется 0, каждая последующая на 1 больше. Переменные заданного типа могут принимать значения только из множества констант. Этот тип отдельно в качестве базовых можно не рассматривать, так как он в своем внутреннем представлении в оперативной памяти аналогичен типу int. Данный тип удобно использовать для ассоциации некоторых констант с символьными именами.
Пример:
enum A {
a, //=0
b, //=1
c=5,//=5
d }; //=6
A x;
x=b; // Переменной x можно присваивать значения констант a, b, c или d
Дополнительно компанией Microsoft введены, так называемые, платформенно- независимые целые типы, по сути это новые имена для уже существующих типов, но их размерность не будет меняться при переходе к другим платформам (размерность этих типов в битах явным образом присутствует в названии):
__int8 unsigned __int8
__int16 unsigned __int16
__int32 unsigned __int32
__int64 unsigned __int64
Кроме того в последние версии продуктов Microsoft дополнительно введены следующие типы, имена которых являются ключевыми словами:
bool – 1 байт, возможные значения true (1) и false (0);
wchar_t – 2 байта (соответствует типу short), обычно используется для хранения кодов символов в кодировке Unicode (1 символ кодируется 2 байтами).
Дата добавления: 2015-08-14; просмотров: 853;