Учебник по Delphi 4


Целые типы



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

    Integer
    Shortint
    Smallint
    Longint
    Byte
    Word
    Cardinal

    Обратите внимание, что один из этих целых типов назван именно целым (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 косая между двумя целыми даст действительный результат с плавающей запятой.


Содержание раздела