Целые типы |
Вверх Предыдущий Следующий |
Список предопределенных целочисленных типов представлен в таблице (3.1). Таблица 3.1: Предопределенные целочисленные типы
Целочисленные типы, и их диапазоны и размеры, предопределены во Free Pascal, и перечислены в таблице (3.2). Пожалуйста, отметьте, что типы QWord и Int64 не истинно перечисляемые, таким образом, некоторые конструкции языка Pascal не будут работать с этими двумя целочисленными типами. Таблица 3.2: Предопределенные целочисленные типы
По умолчанию во Free Pascal тип Integer соответствует типу SmallInt. И типу LongInt в любом из двух режимов Delphi или ObjFPC. Тип Cardinal сейчас всегда соответствует типу LongWord.
Free Pascal делает автоматическое преобразование типов в выражениях, где используются различные виды целочисленных типов: 1.Каждая платформа имеет родной размер целого числа, в зависимости от того, платформа 8-бит, 16-бит, 32-бит или 64-бит. например, на AVR это 8-разрядная платформа. 2.Каждое целое число меньшее, родного размера повышается до базовой версии родного размера. Целые равные родному размеру сохраняют их разрядность. 3.Результат двоичных арифметических операций (+, –, * и т.д.), определяется следующим образом: a.Если по крайней мере один из операндов больше, чем нативный (родной) размер целого, то результатом выбирается наименьший тип, который охватывает диапазон типов обоих операндов. Это означает, что смешивание типа без знака с меньшим или равным по размеру знакового типа, даст тип, который больше, чем оба из них. b.Если оба операнда имеют один и тот же тип (размер), то результатом будет такой-же тип. Единственным исключением является вычитание (–): если один из типов без знаковой, операция вычитания даёт знаковый тип FPC (как и в Delphi, но не в TP7 ). c.Смешивние знаковых и беззнаковых типов родного целого типа - даёт тип, больший по размеру, и со знаком. Это означает, что при смешивании типов LongInt и LongWord на 32-разрядных платформах будет производить Int64. Аналогично, при смешивании типа Byte и ShortInt на 8-разрядных платформах (AVR ), результатом будет тип SmallInt. |