Данные целого типа (integer)
Тип int – целое число, обычно соответствующее естественному размеру целых чисел. Квалификаторы short и long указывают на различные размеры и определяют объем памяти, выделяемый под них (см. табл. 2.1), например:
short x;
long x;
unsigned 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 |
Данные символьного типа (char)
Под величину символьного типа отводится такое количество байт, которое достаточно для любого символа. Поэтому символьная переменная занимает в памяти один байт. Закрепление конкретных символов за кодами производится кодовыми таблицами.
Для персональных компьютеров (ПК) наиболее распространена ASCII (American Standard Code for Information Interchenge) таблица кодов (см. прил. 1). Данные типа char рассматриваются компилятором как целые, поэтому возможно использование signed char: величины со знаком (по умолчанию) – символы с кодами от –128 до +127 и unsigned char – беззнаковые символы с кодами от 0 до 255. Этого достаточно для хранения любого символа из 256-символьного набора ASCII. Величины типа char применяют еще и для хранения целых чисел из указанных диапазонов.
Примеры: char res, simv1, simv2;
char let = 's'; – декларация символьной переменной с инициализацией символом s.
Данные вещественного типа (float, double)
Данные вещественного типа в памяти занимают (табл. 2.2): float – 4 байта (одинарная точность), double (удвоенная точность) – 8 байт; long double (повышенная точность) – 10 байт. Для размещения данных типа float обычно 8 бит выделено для представления порядка и знака и 24 бита под мантиссу.
Таблица 2.2
Тип | Точность (мантисса) | Порядок |
float (4 байта) | 7 цифр после запятой | ± 38 |
double (8 байт) | ± 308 | |
long double (10 байт) | ± 4932 |
Типы данных с плавающей десятичной точкой хранятся в оперативной памяти иначе, чем целочисленные. Внутреннее представление вещественного числа состоит из двух частей: мантиссы и порядка (см. разд. 3.2 «Константы вещественного типа»). В IBM совместимых ПК, как вы уже знаете, переменная типа float занимает 4 байта, из которых один двоичный разрядотводится под знак мантиссы, 8 разрядов под порядок и 23 под мантиссу. Мантисса – это число больше единицы и меньше двух. Поскольку старшая цифра мантиссы всегда равна единице, то ее не хранят.
Для величин типа doublе, занимающих 8 байт, под порядок и мантиссу отводится 11 и 52 разряда соответственно. Длина мантиссыопределяет точность числа, а порядок – его диапазон. Как можно видеть из приведенных выше таблиц, при одинаковом количестве байт, отводимом под величины типа float и long int, диапазоны их допустимых значений сильно различаются из-за внутренней формы представления значений таких данных.
При переносе программы с одной платформы на другую нельзя делать предположений, например, о типе int, так как для оперативной системы (ОС) MS DOS этот тип имеет размер в два байта, а для ОС Windows 9X – четыре байта. В стандарте ANSI поэтому диапазоны значений для основных типов не задаются, а определяются только соотношения между их размерами, например:
sizeof (float) < sizeof (double) < sizeof (long double) ,
sizeof (char) < sizeof (short) < sizeof (int) < sizeof (long) ,
где операция sizeof – возвращает количество байт для указанного аргумента – скалярного типа данных.
Дата добавления: 2016-09-20; просмотров: 793;