Учись программированию на C++ Builder бесплатно!
Арифметические типы данных

Арифметические типы данных – это целые и действительные типы. К целым типам относятся char, short, int и long вместе с их вариантами signed со знаком и unsigned без знака. Из этих ключевых слов может формироваться множество целых типов данных. Многие из них являются синонимами друг друга.

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

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

char ch;

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

signed char ch;

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

unsigned char ch;

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

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

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

Тип Суффикс Пример Память (биты)
__int8 i8 int8 с = 127i8; 8
__int16 i16 int16 s = 32767i16; 16
__int32 i32 int32 i = 12345678i32; 32
__int64 i64 int64 big = 1234565432i64; 64
unsigned __int64 ui64 unsigned int64 hugelnt = 1234567887654321ui64; 64

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

Стандарт ANSI С не накладывает никаких ограничений на способ реализации действительных чисел. Поэтому, если нужно делать переносимые программы, то не надо ориентироваться на тот или иной размер памяти для действительных типов, а использовать для определения этого размера операцию sizeof.


Поиск по сайту