Основные типы данных
Данные в языке Си разделяются на две категории: простые (скалярные), будем их называть базовыми, и сложные (составные) типы данных.
Основные типы базовых данных: стандартный целый (int), вещественный с одинарной точностью (float) и символьный (char).
В свою очередь, данные целого типа могут быть короткими (short), длинными (long), и без знаковыми (unsigned), а вещественные - с удвоенной точностью (double).
Сложные типы – массивы, структуры (struct), объединения или смеси (union), перечисление (enum).
Данные целого и вещественного типов находятся в определенных числовых диапазонах так как занимают разный объем оперативной памяти:
Таблица 1
Тип данных | Объем памяти (байт) | Диапазон значений |
сhar | -128 …127 | |
int | -32768…32767 | |
short | 2(1) | -32768…32767(-128…127) |
long | -2147483648…2147483647 | |
unsigned int | 0…65535 | |
unsigned long | 0…4294967295 | |
float | 3,14*10-38…3,14*1038 | |
double | 1,7 *10-308 1,7 *10308 |
4.3. Декларация (объявление) объектов
Все объекты, с которыми работает программа в Си необходимо декларировать, т.е. объявить компилятору об их присутствии в программе. При этом возможны две формы декларации:
- описание, не приводящее к выделению памяти;
- определение, при котором под объект будет выделен объем оперативной памяти, в соответствии с его типом; в этом случае объект можно сразу инициализировать, т.е. задать его начальное значение.
Кроме констант, которые можно задавать в исходном тексте, все объекты программы должны быть явно декларированы по следующему формату:
<атрибуты> <список ID объектов>;
элементы списка разделяются запятыми, а атрибуты - разделителями. Например: int i,j,k; float a,b;
Объекты программы в общем случае имеют следующие атрибуты:
<класс памяти> - характеристика способа размещения объектов в памяти (статическая, динамическая), определяет область видимости и время жизни переменной (по умолчанию - auto), данные атрибуты будут рассмотрены позже;
<тип> - характеристика механизма интерпретации данных, т.е. это совокупность информации о том, сколько объекту нужно выделить памяти, какой вид имеет представление информации и какие действия над ней допустимы (по умолчанию - int).
Класс памяти и тип – атрибуты необязательные и могут отсутствовать, тогда их значения установятся по умолчанию.
Примеры декларации простых объектов:
int i,j,k;
char r;
double gfd;
Рассмотрим основные базовые типы данных более подробно.
4.4. Данные целого типа (int)
Тип int - целое число, обычно соответствующее естественному размеру целых в используемой ЭВМ. Квалификаторы short и long, которые можно использовать с типом int, указывают на различные размеры целых, т.е. определяют размер памяти, выделяемый под переменные (табл.1).
Примеры: short int x;
long int x;
unsigned int x = 8; (декларация с одновременной инициализацией числом 8).
Атрибут int в таких ситуациях может быть опущен.
Атрибуты signed и unsigned показывают, как интерпретируется старший бит числа, как знак или как часть числа:
int | Знак | Значение числа | |
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | - номера битов |
unsigned int | Значение числа |
15 0 |
long | Знак | Значение числа |
30 0 |
unsigned long | Значение числа |
31 0 |
Если указан только атрибут int, это означает - short signed int.
4.5. Данные символьного типа (char)
Символьная переменная занимает в памяти 1 байт и представляется кодом от 0 до 255. Закрепление конкретных символов за кодами производится кодовыми таблицами.
Для персональных компьютеров наиболее распространена ASCII (American Standard Code for Information Interchenge) таблица кодов (Приложение 1). Данные типа char рассматриваются компилятором как "целые", поэтому возможно использование signed char (по умолчанию) - символы с кодами от -128 до +127 (т.е. только символы с кодами до 127) и unsigned char - символы с кодами от 0 до 255 (в том числе и русские).
Примеры:
char res, simv1, simv2;
char let = 's'; (декларация с одновременной инициализацией символом s).
4.6. Данные вещественного типа (float, double)
Данные вещественного типа в памяти занимают, соответственно, float - 4 байта; double - 8 байт; long double (повышенная точность) - 10 байт. Для размещения данных типа float обычно 8 бит выделено для представления порядка и знака и 24 бита под мантиссу.
Тип | Точность (мантисса) | Порядок |
float | 7 цифр после запятой | ± 38 |
double | ± 308 | |
Long double | ± 4932 |
Дата добавления: 2015-09-11; просмотров: 740;