Язык "C" основывает интерпретацию идентификатора на двухпризнаках идентификатора: его классе памяти и его типе.Класс памяти определяет место и время хранения памяти, свя-занной с идентификатором; тип определяет смысл величин, на-ходящихся в памяти, определенной под идентификатором. Имеются четыре класса памяти: автоматическая, статичес-кая, внешняя и регистровая. Автоматические переменные явля-ются локальными для каждого вызова блока и исчезают при вы-ходе из этого блока. Статические переменные являются локаль-ными, но сохраняют свои значения для следующего входа в блокдаже после того, как управление передается за пределы блока.Внешние переменные существуют и сохраняют свои значения втечение выполнения всей программы и могут использоваться длясвязи между функциями, в том числе и между независимо ском-пилированными функциями. Регистровые переменные хранятся(ели это возможно) в быстрых регистрах машины; подобно авто-матическим переменным они являются локальными для каждогоблока и исчезают при выходе из этого блока. В языке "C" предусмотрено несколько основных типовобъектов: объекты, написанные как символы (CHAR), достаточно вели-ки, чтобы хранить любой член из соответствующего данной реа-лизации внутреннего набора символов, и если действительныйсимвол из этого набора символов хранится в символьной пере-менной, то ее значение эквивалентно целому коду этого симво-ла. В символьных переменных можно хранить и другие величины,но реализация будет машинно-зависимой. Можно использовать до трех размеров целых, описываемыхкак SHORT INT, INT и LONG INT. Длинные целые занимают неменьше памяти, чем короткие, но в конкретной реализации мо-жет оказаться, что либо короткие целые, либо длинные целые,либо те и другие будут эквивалентны простым целым. "Простые"целые имеют естественный размер, предусматриваемый архиитек-турой используемой машины; другие размеры вводятся для удво-летворения специальных потребностей. Целые без знака, описываемые как UNSIGNED, подчиняютсязаконам арифметики по модулю 2**N, где N - число битов в ихпредставлении. (На PDP-11 длинные величины без знака не пре-дусмотрены). Плавающие одинарной точности (FLOAT) и плавающие двойнойточности (DOUBLE) в некоторых реализациях могут быть синони-мами. Поскольку объекты упомянутых выше типов могут быть ра-зумно интерпретированы как числа, эти типы будут называтьсяарифметическими. типы CHAR и INT всех размеров совместно бу-дут называться целочисленными. Типы FLOAT и DOUBLE совместнобудут называться плавающими типами. Кроме основных арифметических типов существует концепту-ально бесконечный класс производных типов, которые образуют-ся из основных типов следующим образом: массивы объектов большинства типов; функции, которые возвращают объекты заданного типа; указатели на объекты данного типа; структуры, содержащие последовательность объектов различных типов; объединения, способные содержать один из нескольких объектов различных типов. Вообще говоря, эти методы построения объектов могут при-меняться рекурсивно.