Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_S.doc
Скачиваний:
23
Добавлен:
09.02.2015
Размер:
1.15 Mб
Скачать

3.2. Целочисленные типы данных

Размер типа intне определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под величины этого типа отводится 2 байта – в этом случае диапазон возможных значений составляет -32 768 ... 32 767 (2 в степени 16 различных значений). Для 32-разрядного - 4 байта – диапазон значений -2 147 483 648 ... 2 147 483 647 (2 в степени 32 различных значений).

Спецификатор shortперед именем типа указывает компилятору, что под число требуется отвести 2 байта независимо от разрядности процессора.

Спецификатор longозначает, что целая величина будет занимать 4 байта. Таким образом, на 16-разрядном компьютере эквивалентыintиshort int, а на 32-разрядном —intиlong int.

При определении переменных вместо short int илиlong intможно использовать более короткие обозначения:short илиlong соответственно:

short a;

long b;

Использование типов int,short int(short),long int(long) подразумевает представление целых чисел со знаком, поэтому спецификаторsignedможно не указывать.

Внутреннее представление величины целого типа — целое число в двоичном коде. Например, число +22типаshort int(short) представляются в памяти так:

Номера разрядов: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Значения разрядов: 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 ,

а отрицательное число -22выглядит следующим образом:

Номера разрядов: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Значения разрядов: 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0

При использовании спецификатора signed(или при его отсутствии) старший бит числа (в данном случае – разряд с номером 15) интерпретируется как знаковый (О — положительное число, 1 — отрицательное).

Спецификатор unsignedпозволяет представлять только положительные числа, при этом старший разряд рассматривается как часть кода числа. Таким образом, диапазон значений типаintзависит от спецификаторов. Диапазоны значений величин целого типа со спецификаторомunsignedвыглядят так:

unsigned int (16-разрядного процессор): от 0 до 65 535;

unsigned int (32-разрядного процессор): от 0 до 4 294 967 295;

unsigned short int илиunsigned short (не зависимо от процессора): от 0 до 65 535.

По умолчанию все целочисленные типы считаются знаковыми, то есть спецификатор signedможно опускать.

Целые константы литералы можно задавать в трех форматах: в десятичном, восьмеричном и в шестнадцатеричном.

В десятичном формате целые значения записываются в обычном виде:

1345 +34 -245

В восьмеричном формате сначала записывается 0 (нуль), а за ним восьмеричные разряды самого числа:

011 07345 -0456

В шестнадцатеричном формате значащим разрядам числа должны предшествовать символы 0xили 0X:

0x12B5 -0xAF2B 0X1FF02

Как уже говорилось ранее, константам, встречающимся в программе, приписывается тот или иной тип в соответствии с их видом. Если этот тип по каким-либо причинам не устраивает программиста, он может явно указать требуемый тип с помощью суффиксов L,l(long) иu,U(unsigned). Например, константа32Lбудет иметь типlongи занимать 4 байта. Можно использовать суффиксыLиUодновременно, например,Ox22ULили05LU.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]