Типы, размер в байтах, экстремальные значения
1. Типы, размер в байтах, экстремальные значения.
В Си существует всего лишь несколько базовых типов:
char – единичный байт, который может содержать один символ из допустимого символьного набора.
Int – целое, обычно отражающее естественное представление целых в машине.
Float – число с плавающей точкой одинарной точности.
Double – число с плавающей точкой двойной точности.
Имеются также несколько квалификаторов, которые можно использовать вместе с указанными базовыми типами. Например, квалификаторы shot и long применяются к целым числам:
Shot int sh;
Long int counter;
Рекомендуемые материалы
В таких объявлениях слово int можно опускать, что обычно и делают.
Если Вам понравилась эта лекция, то понравится и эта - 10 Системы автоматизации построения трансляторов.
Для указания особых свойств объявляемых объектов предназначаются квалификаторы. Объявление объекта с квалификатором const указывает на то, что его значение далее не будет изменяться; объявляя объект как volatile(изменчивый), тем саамы указываем на его особые свойства для выполняемой компилятором оптимизации. Ни один из квалификаторов на диапазоны значений и арифметические свойства объектов не влияет.
Если только не возникает противоречий со здравым смыслом, shot int и long int должны быть разной длины, а int соответствовать естественному размеру целых на данной машине. Чаще всего представления целого, описанного с квалификатором shot, отводится 16 битов, а с квалификатором long – 32 бита, а значению типа int – или 16, или 32 бита. Разработчики компилятора вправе сами выбрать подходящие размеры, сообразуясь с характеристиками своего компьютера и соблюдая следующие ограничения: значения типов shot и int представляются по крайне мере 16 битами; тип long – по крайней мере 32 битами; размер shot не больше размера Int, который в свою очередб не больше размера long.
Квалификаторы signed(со знаком) или unsigned (без знака) можно применять к типу char и любому целочисленному типу. Значения unsigned всегда положительны или равны нулю и подчиняются законам арифметики по модулю 2n, где n- количество битов в представлении типа. Так, если значению char отводится 8 битов, то unsigned char имеет значения в диапазоне от 2 до 255, а signed char – от -128 lj 127.
Тип long double предназначен для арифметики с плавающей точкой повышенной точности. Как и в случае целых, размеры объектов с плавающей очной зависят от реализации; float, double и long double могут представляться одним размером, а могут – двумя или тремя разными размерами.
Именованные константы для всех размеров вместе с другими характеристиками машины и компилятора содержаться в стандартных заголовочных файлах <limit.h> и <float.h>.
Помимо базовых типов существует практически бесконечный класс производных типов, которые формируются из уже существующих и описывают следующие конструкции:
- массивы объектов заданного типа;
- функции, возвращающие объекты заданного типа;
- указатели на объекты заданного типа;
- структуры, содержащие последовательность объектов, возможно, различных заданных типов;
- объединения, каждое из которых может содержать любой из нескольких объектов различных заданных типов.