Russian Belarusian English German Japanese Ukrainian

3.55

Арифметические типы данных

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

Синонимы Примечание
char, signed char Синонимы, если умолчанием для char задано signed
unsigned char  
char, unsigned char Синонимы, если умолчанием для char задано unsigned
signed char  
int, signed int  
unsigned, unsigned int  
short, short int, signed short int  
unsigned short, unsigned short int  
long, long int, signed long int  
unsigned long, unsigned long int  

Спецификаторы 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.

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий


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