Лекция № 2. Базовые типы данных. Объявления переменных
Термины
Лексема – единица текста программы, имеющая для компилятора самостоятельный смысл.
Идентификатор (имя переменной, функции или другого объекта) – это последовательность букв английского алфавита, десятичных цифр, символа подчеркивания, начинающаяся не с цифры (в некоторых компиляторах, например, Visual C++ разрешается в идентификаторах использовать символ $).
Ключевые слова – это зарезервированные идентификаторы, имеющие специальное значение для компилятора.
Константа – это значение, которое не может быть изменено в процессе работы программа.
Комментарий – это текст исходного кода программы, не обрабатываемый компилятором и служащий для повышения читабельности программ.
В любом алгоритмическом языке каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип.
Тип данных определяет:
– внутреннее представление данных в памяти компьютера;
– множество значений, которые могут принимать величины этого типа;
– операции и функции, которые можно применять к величинам этого тина.
В языке Си (Си++) существуют стандартные или базовые типы данных и производные типы данных.
В Си стандарта 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 байтами).