Глава 2
34
понимаются соответственно как signed int и unsigned int. Ключевое слово int,
если оно используется отдельно, воспринимается как signed. Ключевые слова
long и short, когда они используются отдельно, воспринимаются как long int и
short int.
Типы signed char, signed int, signed short int и signed long int (как и
соответствующие unsigned и enum) называются целыми типами.
Спецификаторы типов float, double и long double называются "плавающими"
типами или типами "с плавающей точкой". В объявлении переменной или
функции можно использовать любой
спецификатор целого типа или типа с
плавающей точкой.
Тип void можно использовать для объявления функции, которая не
возвращает значения. Когда ключевое слово void появляется в скобках за
именем функции, оно указывает на то, что у функции нет аргументов.
Спецификатор типа const объявляет не подлежащий модификации
объект. Ключевое слово const может быть модификатором для любого
фундаментального или составного типа. Если объявление составного типа
содержит модификатор const, то каждый элемент составного типа считается
неизменным. Если элемент объявлен только со спецификатором типа const,
то считается что он имеет тип const int. Объекты const можно поместить в
раздел памяти, предназначенный только для чтения.
Спецификатор типа volatile объявляет элемент, значение которого может
быть изменено без контроля
со стороны программы, в которой он появляется.
Например, адрес глобальной переменной можно передать в подпрограмму
операционной системы, следящей за временем, и тогда эта переменная будет
содержать системное время. В этом случае значение переменной будет
изменяться без участия какого-либо оператора программы. Знание таких
подробностей важно потому, что большинство компиляторов С
автоматически оптимизируют некоторые выражения, предполагая при этом
неизменность переменной, если она не встречается в левой части оператора
присваивания. В этом случае при очередной ссылке на переменную может