672_____________________________________________Глава 12

При отсутствии в указании типа спецификатора unsigned для целых типов по-
дразумевается signed. Исключением из этого правила является тип char. C+-rBuiS-
der позволяет вам установить в качестве умолчания для char signed или unsigned,
В этом случае, если вы пишете объявление

char ch;

оно воспринимается как

signed char ch;

Если же вы хотите объявить переменную типа char без знака, вы должны это
сделать явно:

unsigned char ch;

Спецификаторы long и short могут использоваться только с int. Если тип обо-
значен просто как long или short, то подразумеваются соответственно long int и
short int.

Объем памяти, занимаемый различными целыми типами не лимитирован
стандартом ANSI С. Указано только, что short, int и long должны образовывать не
убывающую последовательность, т.е. short <= int <= long. Поэтому не исключает-
ся, что все три типа требуют одинакового объема памяти. Таким образом, объем
памяти может меняться от одной платформы к другой и это надо учитывать, если
хотеть создавать переносимые программы.

Объемы памяти, занимаемые целыми типами в данной версии C++Builder для
32 разрядных программ, приведены в таблице в разделе 12.1. В частности, из этой
таблицы вы можете увидеть, что int и long эквивалентны и занимают по 32 бита.

Типы со знаком используют старший бит для хранения знака: 0 — положите
льный, 1 — отрицательный.

Помимо рассмотренных выше имеются еще целые типы, имена которых начи-
наются с символов «_int», за которыми следует число бит. При записи констант
этих типов можно использовать суффиксы i и ui, как показано в приведенной
ниже таблице. Впрочем, эти же суффиксы можно использовать и при задании зна-
чений переменных других целых типов.

Тип	Суффикс	Пример	Память (биты)
int8	i8	int8 с = 127i8;	8
intl6	il6	intl6 s = 32767il6;	16
int32	i32	int32 i = 123456789i32;	32
int64	i64	int64 big = 12345654321164;	64
unsignedint64	ui64	unsigned int64 hugeint = 123456788765432lui64;	64

Основными типами данных для представления действительных чисел с плава-
ющей запятой являются типы float и double. Первый из них размещается в 32 би-
тах, второй — в 64. К типу double может применяться спецификатор long, кото-
рый увеличивает размер памяти до 80 бит.

Диапазоны возможных значений и затраты памяти для действительных типов
в данной версии C++Builder для 32 разрядных программ приведены в таблице в
разделе 12.1. Стандарт ANSI С не накладывает никаких ограничений на способ ре-
ализации действительных чисел. Поэтому, если вы хотите делать переносимые
программы, то не ориентируйтесь на тот или иной размер памяти для действитель-
ных типов, а используйте для определения этого размера операцию sizeof (см. раз-
дел 11.7.9 главы 11).