Простые типы данных

Тип - множество значений, которые могут принимать объекты программы, и совокупность операций, допустимых над этими значениями.

Тип используется для

- определения требуемого количества памяти при ее исходном распределении,

- интерпретации битовых кодов, находимых в объектах при последующих к ним обращениях,

- а также в многочисленных ситуациях контроля типа, требуемого для обнаружения возможных случаев недопустимого присваивания.

Таксономия типа Существует четыре базовые категории типа: void, scalar, function, aggregate. Тип Scalar подразделяется на арифметический, перечислимый, указатель и в С++ ссылки. Тип Aggregate подразделяется на массив, структуру, объединение и класс. Простые типы называют также фундаментальными, а сложные – производными

Целый тип данных

Для определения данных целого типа используются различные ключевые слова, которые определяют диапазон значений и размер области памяти, выделяемой под переменные (табл. 5).

Таблица 5

Тип Размер памяти в байтах Диапазон значений Название типа
char   от –128 до 127 Символьный
int Для IBM XT,AT,SX,DX 2   Целый
short   от -32768 до 32767 Короткий целый
long   от -2 147 483 648 до 2 147 483 647 Длинный целый
unsigned сhar   oт 0 до 255 Символьный без знака
unsigned int Для IBM XT,AT,SX,DX 2   Целый без знака
unsigned short   от 0 до 65535 Короткий целый без знака
unsigned long   от 0 до 4 294 967 295 Длинный целый без знака

Отметим, что ключевые слова signed и unsigned необязательны. Они указывают, как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned, то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый. В случае отсутствия ключевого слова unsigned целая переменная считается знаковой. В том случае, если спецификатор типа состоит из ключевого типа signed или unsigned и далее следует идентификатор переменной, то она будет рассматриваться как переменная типа int. Целые без знака, описываемые как unsigned, подчиняются правилам арифметики по модулю 2n, где n - число бит в их представлении.

Например:

unsigned int n; unsigned int b; int c; (подразумевается signed int c); unsigned d; (подразумевается unsigned int d); signed f; (подразумевается signed int f).

Следует сделать следующее замечание: в языке С++ не определено представление в памяти и диапазон значений для идентификаторов с модификаторами типа int и unsigned int. Размер памяти для переменной с модификатором типа signed int определяется длиной машинного слова, которое имеет различный размер на разных машинах. Так, на 16-ти разрядных машинах размер слова равен 2-м байтам, на 32-х разрядных машинах соответственно 4-м байтам, т.е. тип int эквивалентен типам short int, или long int в зависимости от архитектуры используемой ПЭВМ. Таким образом, одна и та же программа может правильно работать на одном компьютере и неправильно на другом. Для определения длины памяти занимаемой переменной можно использовать операцию sizeof языка С++, возвращающую значение длины указанного модификатора-типа.

Например:

a = sizeof(int); b = sizeof(long int);c = sizeof(unsigned long); Константы целого типа

Целая константа: это десятичное, восьмеричное или шестнадцатеричное число, которое представляет целую величину в одной из следующих форм: десятичной, восьмеричной или шестнадцатеричной.

Десятичная константа состоит из одной или нескольких десятичных цифр, причем первая цифра не должна быть нулем (в противном случае число будет воспринято как восьмеричное).

Восьмеричная константа состоит из обязательного нуля и одной или нескольких восьмеричных цифр (среди цифр должны отсутствовать восьмерка и девятка, так как эти цифры не входят в восьмеричную систему счисления).

Шестнадцатеричная константа начинается с обязательной последовательности 0х или 0Х и содержит одну или несколько шестнадцатеричных цифр (цифры представляющие собой набор цифр шестнадцатеричной системы счисления: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

Примеры целых констант: Десятичная Восьмеричная Шестнадцатеричная константа константа константа 16 020 0x10 127 0117 0x2B 240 0360 0XF0

Если требуется сформировать отрицательную целую константу, то используют знак ‘-‘ перед записью константы (который будет называться унарным минусом). Например: -0x2A, -088, -16.

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

• десятичные константы рассматриваются как величины со знаком, и им присваивается тип int (целая) или long (длинная целая) в соответствии со значением константы. Если константа меньше 32768, то ей присваивается тип int в противном случае long.

• восьмеричным и шестнадцатеричным константам присваивается тип int, unsigned int (беззнаковая целая), long или unsigned long в зависимости от значения константы согласно табл 6.

Таблица 6

Диапазон шестнадцатеричных констант Диапазон восьмеричных констант Тип
0x0 - 0x7FFF 0 - 077777 int
0X8000 - 0XFFFF 0100000 - 0177777 unsigned int
0X10000 - 0X7FFFFFFF 0200000 - 017777777777 long
0X80000000 - 0XFFFFFFFF 020000000000 - 037777777777 unsigned long

Для того чтобы любую целую константу определить типом long, достаточно в конце константы поставить букву «l» или «L».

Пример: 5l, 6l, 128L, 0105L, OX2A11L.

Отметим также, что восьмеричные и шестнадцатеричные константы также могут иметь модификатор unsigned. Это достигается указанием префикса u или U после константы, константа без этого префикса считается знаковой. Если Константы с указанным префиксом называются явно заданными.

Например:

const I= 0xA8C; // константа типа int signed const L= 01786l; // константа типа long signed int u= 0xF7u; // переменная типа int unsigned Символьная константа

Символьная константа - представляется символом заключенном в апострофы. Символьные константы имеют тип int и при преобразовании типов дополняются знаком. Некоторые неграфические символы, одиночная кавычка ' и обратная косая \, могут быть представлены в соответствие с таблицей escape-последовательностей (табл.4). Управляющая последовательность рассматривается как одиночный символ, допустимо ее использовать в символьных константах. Значением символьной константы является числовой код символа.

Примеры:

' '- пробел, 'Q'- буква Q, '\n' - символ новой строки,

'\\' - обратная дробная черта, '\v' - вертикальная табуляция.

Отметим тот факт, что, если обратная дробная черта предшествует символу не являющемуся управляющей последовательностью (т.е. не включенному в табл.4) и не являющемуся цифрой, то эта черта игнорируется, а сам символ представляется как литеральный.

Например:

символ \h представляется символом h в строковой или символьной константе.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: