netlib.narod.ru< Назад | Оглавление | Далее >

2.2. Типы и размеры данных

В Си сушествует всего лишь несколько базовых типов:

char

единичный байт, который может содержать один символ;

int

целое число, обычно соответствующее стандартному представлению целых чисел в данной машине;

float

число с плавающей точкой одинарной точности;

double

число с плавающей точкой двойной точности.

Имеется также несколько квалификаторов, которые можно использовать вместе с перечисленными базовыми типами. Например, квалификаторы short (короткий) и long (длинный) применяются к целым:

    short int sh;
    long  int counter;

В таких объявлениях слово int можно опускать, что обычно и делается.

Если только не возникает противоречий со здравым смыслом, short int и long int должны быть разной длины, а int соответствовать стандартному для данной машины размеру целых. Чаще всего для представления целого, описанного с квалификатором short, отводится 16 бит, с квалификатором long — 32 бита, а значению типа int — или 16, или 32 бита. Разработчики компилятора вправе сами выбирать подходящие размеры, сообразуясь с характеристиками компьютера и соблюдая следующие ограничения: для представления значений типов short и int должно использоваться не менее 16 бит; для типа long — по крайней мере 32 бита; размер short не больше размера int, который в свою очередь не больше размера long.

Квалификаторы signed (со знаком) или unsigned (без знака) можно применять к типу char и любому целочисленному типу. Значения unsigned всегда положительны или равны нулю и подчиняются законам арифметики по модулю 2n, где n — количество битов в представлении типа. Так, если значению char отводится восемь битов, то unsigned char может принимать значения в диапазоне от 0 до 255, а signed char — от –128 до 127 (в машине с двоичным дополнительным кодом). Являются ли значения базового типа char знаковыми или беззнаковыми, зависит от реализации, но в любом случае коды печатаемых символов положительны.

Тип long double предназначен для арифметики с плавающей точкой повышенной точности. Как и в случае целых, размеры объектов с плавающей точкой зависят от реализации; float, double и long double могут представляться одним размером, а могут — двумя или тремя разными размерами.

Именованые константы для всех размеров вместе с другими характеристиками машины и компилятора содержатся в стандартных заголовочных файлах <limits.h> и <float.h> (см. приложение В).


Упражнение 2-1


Напишите программу, которая будет выдавать диапазоны значений типов char, short, int и long, описанных как signed и как unsigned, с помощью печати соответствующих значений из стандартных заголовочных файлов и путем прямого вычисления. Определите диапазоны чисел с плавающей точкой различных типов. Вычислить эти диапазоны сложнее.



netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz