Архив на месяц Ноябрь, 2009

Типы данных и их объявление

Важное отличие языка СИ от других языков (PL1, FORTRAN, и др.) является отсутствие принципа умолчания, что приводит к необходимости объявления всех переменных используемых в программе явно вместе с указанием соответствующих им типов. Объявления переменной имеет следующий формат: [спецафикатор-класа-памяти] спецификатор-типа описатель [=инициатор] [,описатель [= инициатор] ]… Описатель – идентификатор простой переменной либо более сложная конструкция с [...]

1.2.1 Категории типов данных

Ключевые слова для определения основных типов данных Целые типы : Плавающие типы: char float int double short long double long signed unsigned Переменная любого типа может быть объявлена как немодифицируемая. Это достигается добавлением ключевого слова const к спецификатору-типа. Объекты с типом const представляют собой данные используемые только для чтения, т.е. этой переменной не может быть [...]

1.2.2. Целый тип данных

Для определения данных целого типа используются различные ключевые слова, которые определяют диапазон значений и размер области памяти, выделяемой под переменные (табл. 6). Таблица 6 Тип Размер памяти в байтах Диапазон значений char 1 от -128 до 127 int Для IBM XT,AT,SX,DX 2 short 2 от -32768 до 32767 long 4 от -2 147 483 648 [...]

1.2.3. Данные плавающего типа

Для переменных, представляющих число с плавающей точкой используются следующие модификаторы-типа : float, double, long double (в некоторых реализациях языка long double СИ отсутствует). Величина с модификатором-типа float занимает 4 байта. Из них 1 байт отводится для знака, 8 бит для избыточной экспоненты и 23 бита для мантиссы. Отметим, что старший бит мантиссы всегда равен 1, [...]

1.2.4. Указатели

Указатель – это адрес памяти, распределяемой для размещения идентификатора (в качестве идентификатора может выступать имя переменной, массива, структуры, строкового литерала). В том случае, если переменная объявлена как указатель, то она содержит адрес памяти, по которому может находится скалярная величина любого типа. При объявлении переменной типа указатель, необходимо определить тип объекта данных, адрес которых будет содержать [...]

1.2.5. Переменные перечислимого типа

Переменная, которая может принимать значение из некоторого списка значений, называется переменной перечислимого типа или перечислением. Объявление перечисления начинается с ключевого слова enum и имеет два формата представления. Формат 1. enum [имя-тега-перечисления] {список-перечисления} описатель[,описатель...]; Формат 2. enum имя-тега-перечисления описатель [,описатель..]; Объявление перечисления задает тип переменной перечисления и определяет список именованных констант, называемый списком-перечисления. Значением каждого имени [...]

1.2.6. Массивы

Массивы – это группа элементов одинакового типа (double, float, int и т.п.). Из объявления массива компилятор должен получить информацию о типе элементов массива и их количестве. Объявление массива имеет два формата: спецификатор-типа описатель [константное - выражение]; спецификатор-типа описатель [ ]; Описатель – это идентификатор массива . Спецификатор-типа задает тип элементов объявляемого массива. Элементами массива не [...]

1.2.7. Структуры

Cтруктуры – это составной объект, в который входят элементы любых типов, за исключением функций. В отличие от массива, который является однородным объектом, структура может быть неоднородной. Тип структуры определяется записью вида: struct { список определений } В структуре обязательно должен быть указан хотя бы один компонент. Определение структур имеет следующий вид: тип-данных описатель; где тип-данных [...]

1.2.8. Объединения (смеси)

Объединение подобно структуре, однако в каждый момент времени может использоваться (или другими словами быть ответным) только один из элементов объединения. Тип объединения может задаваться в следующем виде: union { описание элемента 1; … описание элемента n; }; Главной особенностью объединения является то, что для каждого из объявленных элементов выделяется одна и та же область памяти, [...]

1.2.9. Поля битов

Элементом структуры может быть битовое поле, обеспечивающее доступ к отдельным битам памяти. Вне структур битовые поля объявлять нельзя. Нельзя также организовывать массивы битовых полей и нельзя применять к полям операцию определения адреса. В общем случае тип структуры с битовым полем задается в следующем виде: struct { unsigned идентификатор 1 : длина-поля 1; unsigned идентификатор 2 [...]