Тип данных определяет множество значений, набор операций, которые можно применять к таким значениям и способ реализации хранения значений и выполнения операций.
Процесс проверки и накладывания ограничений на типы используемых данных называется контролем типов или типизацией программных данных. Различают следующие виды типизации:
- Статическая типизация — контроль типов осуществляется при компиляции.
- Динамическая типизация — контроль типов осуществляется во время выполнения.
Язык Си поддерживает статическую типизацию, и типы всех используемых в программе данных должны быть указаны перед ее компиляцией.
Различают простые, составные и прочие типы данных.
Простые данные можно разделить на
- целочисленные, (int)
- вещественные,(float)
- символьные(char)
- логические.
Составные (сложные) данные
- Массив - индексированный набор элементов одного типа.
- Строковый тип - массив, хранящий строку символов.
- Структура - набор различных элементов (полей записи), хранимый как единое целое и предусматривающий доступ к отдельным полям структуры.
Другие типы данных
- Указатель - хранит адрес в памяти компьютера, указывающий на какую-либо информацию, как правило — указатель на переменную.
Программа, написанная на языке Си, оперирует с данными различных типов. Все данные имеют имя и тип. Обращение к данным в программе осуществляется по их именам (идентификаторам).
Идентификатор — это последовательность, содержащая не более 32 символов, среди которых могут быть любые буквы латинского алфавита a - z, A - Z, цифры 0 - 9 и знак подчеркивания (_). Первый символ идентификатора не должен быть цифрой.
Несмотря на то, что допускается имя, имеющее до 32 символов, определяющее значение имеют только первые 8 символов. Помимо имени, все данные имеют тип. Указание типа необходимо для того, чтобы было известно, сколько места в оперативной памяти будет занимать данный объект.
Компилятор языка Си придерживается строгого соответствия прописных и строчных букв в именах идентификаторов и лексем.
Целочисленные данные
Целочисленные данные могут быть представлены в знаковой и беззнаковой форме.
Беззнаковые целые числа представляются в виде последовательности битов в диапазоне от 0 до 2n-1, где n-количество занимаемых битов.
Знаковые целые числа представляются в диапазоне -2n-1...+2n-1-1. При этом старший бит данного отводится под знак числа (0 соответствует положительному числу, 1 – отрицательному).
Данное целого типа - это целое число, представленное в компьютере в прямом или дополнительном двоичном коде в выделенном для него поле. В программе Си такие данные объявляются с атрибутами unsigned char, char, enum, unsigned int, int, short int
Прямой и дополнительный код - это форма представления целого положительного и отрицательного числа в двоичной системе. Для представления знака используется крайний левый байт (1-знак "-", 0-знак "+"). Положительные числа представляются в прямом коде (без изменения). Отрицательные числа представляются в дополнительном коде (все биты меняют значения на противоположные, а в последний разряд прибавляется единица)
Типы данных целого типа
Тип данных |
Размер, бит |
Диапазон значений |
Назначение типа |
unsigned char |
8 |
0…255 |
Целые числа и коды символов |
char |
8 |
-128…127 |
Целые числа и |
enum |
16 |
-32768…32767 |
Упорядоченные наборы целых значений |
unsigned int |
16 |
0…65535 |
Большие целые положительные числа |
int |
16 |
-32768…32767 |
Небольшие целые положительные и отрицательные числа |
short int |
16 |
-32768…32767 |
Небольшие целые(то же самое, что и int) |
unsigned long |
32 |
0…4294967295 |
Астрономические расстояния |
long |
32 |
-2147483648… 2147483647 |
Большие положительные и отрицательные числа |
Строковые данные
Строковое данное - это набор данных символьного типа. В программах на Си такие данные всегда заканчиваются нуль-символом ("\0") и объявляются с атрибутами типа char s[n], где s- имя данного, n-десятичное целое число, определяющее количество байтов, выделяемых для s.
Строки - это набор символов. В языке Си – это массив символов. Каждый символ занимает один байт. Особенностью представления строк заключается в том, что признаком окончания строки является нуль-символ, обозначаемый как ‘\0’. В программе на Си факт появления строковой переменной связывается с оператором типа char m[10];,
который означает, переменная m является строкой и для ее размещения выделяется 10 байтов вместе с нуль-символом. Ниже представлено размещение переменной m в памяти компьютера и возможное его значение
В данном примере длина переменной m – 10 байтов, а длина конкретной строки, значение которой приняла m – 6 байтов (в слове ‘Иванов’ – 6 букв).