logo
INFO2

Целые типы

В переменных целых типов информация представляется в виде целых чисел, т.е. чисел не имеющих дробной части. Определенные в Object Pascal целые типы подразделяются на физические (фундаментальные) и логические (общие). При программировании удобнее использовать логические целые типы, которые задают объем переменных в зависимости от типа микропроцессора и операционной среды таким образом, чтобы достигалась максимальная эффективность. Физические целые типы следует применять лишь в тех случаях, когда в первую очередь важны именно диапазон значений и физический объем переменной. В Object Pascal определены следующие целые типы.

Обратите внимание, что один из этих целых типов назван именно целым (integer). Это может иногда приводить к путанице, но мы легко сможем ее избежать, применяя термин целый к. группе типов, a integer — к конкретному типу, определяемому в программе этим ключевым словом. Переменные физических целых типов имеют разные диапазоны значений в зависимости от того, сколько байтов памяти они занимают (что равно значению, возвращаемому функцией SizeOf для данного типа). Диапазоны значений для всех физических типов перечислены в табл. 1.2.

Таблица 1.2. - Физические целые типы

Тип

Диапазон значении

Физический формат

Shortint

 -128-127

 8 бит, со знаком

Smallint 

-32 768-32 767 

16 бит, со знаком

Longint

 -2 147 483 648-2 147 483 647 

32 бит, со знаком

Byte

 0-255 

8 бит, без знака

Word

 0-65 535 

16 бит, без знака

Диапазоны значений и форматы физических целых типов не зависят от микропроцессора и операционной системы, в которых выполняется программа. Они не меняются (или, по крайней мере, не должны меняться) с изменением реализации или версии Object Pascal.

Диапазоны значений логических целых типов (Integer и Cardinal) определяются совершенно иным образом. Как видно из табл. 1.3, они никак не связаны с диапазонами соответствующих физических типов. Обратите внимание, что в Delphi по умолчанию задано 32-разрядное представление.

Таблица 1.3. - Логические целые типы

Тип

Диапазон значений 

Физический формат

Integer 

-32 768-32 767 

16 бит, со знаком (SmalIInt)

Integer 

-2 147 483 648-2 147 483 647 

32 бит, со знаком (Longint)

Cardinal 

0-65 535 

16 бит, без знака (Word)

Cardinal 

0-2 147483647

32 бит, без знака (Longint)

Совет:

В С и C++ для целых значений определены типы  int, short int (или просто short) и long int (или  просто long). Тип int из C/C++ соответствует типу Integer из Delphi, a long из C/C++ —  Longint из Delphi. Однако Shortint из C/C++ соответствует в Delphi не Shortint, a Smalltlnt. Эквивалент  Shortint из Delphi в C/C++— это signed char. Тип unsigned char в C/C++ соответствует типу  Byte из Delphi. В C/C++ существует еще тип unsigned long, аналога которому в Delphi нет.

Над целыми данными выполняются все операции, определенные для порядковых типов, но с ними все же удобнее работать как с числами, а не с "нечисленными порядковыми типами". Как и "живые" числа, данные целых типов можно складывать (+), вычитать (-) и умножать (*). Однако некоторые операции и функции, применяемые к данным целых типов, имеют несколько иной смысл.

Операция

Результат

Abs (X)

Возвращает абсолютное целое значение Х

Х Div Y

Возвращает целую часть частного деления Х на Y

Х Mod Y

Возвращает остаток частного деления Х на Y

Odd (X)

Возвращает булево True (истина), если Х — нечетное целое, и False (ложь) — в противном случае

Sqr (X)

Возвращает целый квадрат Х (т.е. Х*Х)

Совет:

Будьте внимательны при перенесении численных выражений из одного языка в другой. В Basic, например,vфункция SQR вычисляет квадратный корень. В C/C++ целое деление обозначается косой чертой (/). В Delphi косая между двумя целыми даст действительный результат с плавающей запятой.