Шрифт:
Служебные слово unsigned (без знака) используется вместе с целочисленными типами. Указание служебного слова unsigned перед спецификацией типа целочисленного значения определяет использование его старшего разряда. Для целых чисел со знаком старший разряд используется для хранения знака, что приводит к сужению диапазона модуля допустимых значений. В целых числах без знака старший разряд используется как дополнительный разряд числа, следовательно, диапазон допустимых значений расширяется. По умолчанию, т.е. без указания служебного слова unsigned, переменные типа char, int и long всегда считаются знаковыми. Числа в формате с плавающей запятой типов float и double также всегда знаковые.
В сочетании со спецификацией типа int возможно применение служебного слова short (короткий). Служебное слово short используется для сужения типа int до «короткого» целого. Применение служебного слова short имеет смысл, когда длина машинного слова микроконтроллера составляет четыре и более байтов. В этом случае спецификация типа short int соответствует целому числу, разрядностью в половину машинного слова. В случаях, когда машинное слово составляет два байта, спецификации типов int и short int совпадают (например, в 16-ти разрядном микроконтроллере HCS12). В некоторых компиляторах языка Си разрешается опускать слово int в спецификации типа short int и использовать одно слово short.
Слово long, обозначающее целое число, соответствующее двойному машинному слову, является таким же служебным словом как unsigned и применяется перед спецификацией типа int для его расширения до «длинного» целого (до двойного машинного слова). Однако в языке Си разрешается опускать слово int в спецификации типа long int и использовать одно слово long.
В дополнение к рассмотренным выше основным типам данных в языке Си существуют пять дополнительных типов данных:
• Array — массив, набор элементов одного типа;
• Pointer — указатель, переменная, которая содержит адрес переменной определенного типа;
• Structure — структура, набор элементов различного типа;
• Union — объединение, одна область памяти для двух различных типов данных;
• Function — функция, являясь сама определенным типом данных, может генерировать типы данных и возвращать типы данных.
Иногда эти пять типов данных характеризуют как производные типы, поскольку для их описания используются основные типы данных из табл. 3.1. Мы рассмотрим эти пять типов данных более подробно в этой главе, а также в главе 8.
В языке Си в простейшем случае синтаксис определения переменной или какого либо другого объекта данных выглядит так:
В более сложных случаях указывается также способ доступа к переменной и/или класс ее хранения:
При объявлении массива может быть задано число элементов и их значения:
Первое поле, <способ доступа/класс хранения>, используется для задания типа памяти, куда должна быть помещена переменная. Второе поле, спецификация типа, содержит определение типа из табл. 3.1. Третье поле, идентификатор, содержит в себе придуманное программистом имя переменной. Четвертое поле, в котором проставлено численное значение или строка символов для массива, необязательное. Оно необходимо, если программист в строке объявления переменной желает также задать ее начальное значение, т.е. инициализировать переменную. Ниже приведен пример определения двухбайтовой переменной с именем «change» в целочисленном формате со знаком (тип int в соответствии с табл. 3.1):
Точка с запятой в конце строки должна быть проставлена обязательно, поскольку она обозначает завершения выражения в тексте программы на Си.
Имя переменной может быть произвольным, но оно не должно совпадать с зарезервированными в языке Си служебными словами:
Шесть слов из приведенного списка используются в Си для определения класса хранения переменной:
Программист может управлять размещением данных, поместив их либо в сегмент данных, либо в сегмент стека. Осуществляется это путём размещения объявлений данных в различных частях модуля программы на языке Си, что определяет так называемый класс хранения объекта, который в свою очередь задаёт время его жизни и область действия.