Операционная система UNIX. Руководство программиста

       

Тип


Язык C поддерживает несколько базовых типов объектов. Объекты, описанные как символы (char), занимают место достаточное, чтобы поместить в него любое значение из используемой кодировки символов. Если в переменную типа char заносится настоящий символ из данной кодировки, ее значение равно численному значению символа. В символьные переменные можно помещать и другие величины, но реализация этого машинно-зависима. В частности, char по умолчанию может быть знаковым или беззнаковым. В данной реализации символы по умолчанию знаковые.

Доступно до трех возможных размеров целых чисел, которые описываются при помощи ключевых слов short int, int и long int. Более длинные целые предоставляют не меньше места, чем более короткие, однако в некоторых реализациях короткие или длинные целые, либо и те и другие, эквивалентны обычным целым. Обычные целые имеют размер, наиболее естественный для архитектуры конкретного компьютера. Другие размеры предоставляются, чтобы удовлетворить специфические потребности. Размеры базовых типов для процессоров MC68020/30 показаны в таблице:

68020/30
char  8 бит  
 int  32  
 short  16  
 long  32  
 float  32  
 double  64 

Свойства типов enum (см. Описания перечислимых типов в разделе ОПИСАНИЯ) тождественны свойствам некоторых целых типов. Реализация компилятора может использовать информацию о диапазоне значений, чтобы определить, сколько выделять памяти.

Беззнаковые целые, описанные как unsigned, подчиняются законам арифметики по модулю (2n), где n - число бит в их представлении.

Для вещественных чисел обычная (float) и двойная (double) точности могут в некоторых реализациях совпасть.

Поскольку объекты перечисленных выше типов можно с успехом интерпретировать как числа, будем далее относить их к арифметическим типам. char, int всех размеров (со знаком или без), а также enum будут собирательно называться целочисленными типами. Типы float и double будут собирательно называться вещественными типами.

Тип void задает пустое множество значений. Он используется для обозначения типа функций, не возвращающих значения.

Кроме базовых арифметических типов имеется потенциально бесконечный класс производных типов, построенных из базовых типов с помощью следующих конструкторов:

  • Массивы объектов большинства типов.
  • Функции, возвращающие объекты данного типа.
  • Указатели на объекты данного типа.
  • Структуры, которые содержат в себе последовательность объектов различных типов.
  • Объединения, которые могут содержать в себе один из нескольких объектов различных типов.

В общем случае перечисленные методы конструирования типов могут применяться рекурсивно.



Содержание раздела