Переменные и константы
Данные, обрабатываемые компьютером, - это константы и переменные. Все переменные в языке С++ должны быть описаны явно. Описание переменной включает спецификацию типа, имя переменной, ряд необязательных модификаторов, задающих или особенности внутреннего представления переменно, или класс её хранения. При описании возможно задание начального значения переменной (инициализация переменной). Тип константы распознаётся компилятором по её записи в программе.
Понятие «тип» - одно из фундаментальных для любого языка программирования. В С++ все типы разбиваются на 4 категории: «пустой» тип (void); скалярный тип; тип «функция»; агрегированный тип (агрегат).
К скалярным относят арифметические типы, перечисления, указатели, ссылочный тип (reference type). К агрегированным типам относят массивы, структуры и объединения и классы.
Кроме того, типы могут быть разделены на основные (фундаментальные) и производные (derived). К основным типам относят void, char, int, float, и double вместе с вариантами short, long, signed и unsigned, применимыми к некоторым из них.
В С++ есть набор основных типов, которые соответствуют наиболее общим основным единицам памяти компьютера и наиболее общим основным способам их использования:
char, short int, int, long int для представления целых различных размеров;
float, double для представления чисел с плавающей точкой;
unsigned char, unsigned short int, unsigned int, unsigned long int для представления беззнаковых целых, логических значений, битовых массивов и т.п.
Производные типы - это указатели и ссылки на другие типы, массивы, функции, классы, структуры и объединения.
Данные типа int
Тип «целое» (integer) включает данные типа char, short, int И long вместе с их вариантами signed и unsigned. Данные типа int (переменные и константы) могут быть в одной из следующих возможных форм, указанных в табл.1.
Таблица 1
Данные типа int для компилятора Borland C++ 3.1
Тип | Размер, Бит | Диапазон представления чисел | |
Минимум | Максимум | ||
Unsigned int Short int Int Long Unsigned long | -32 768 -32 768 -2 147 483 648 | 65 535 32 767 32 767 2 147 483 647 4 294 967 295 |
Как следует из таблицы, short int и int являются синонимами. Синонимами являются типы unsigned int и unsigned.
Язык С++ поддерживает IEEE – стандарт внутреннего представления данных типа int (рис.1).
Int | S | Значение числа |
14 0 |
unsigned int | Значение числа |
15 0 |
long int | S | Значение числа |
30 0 |
long unsigned | Значение числа |
31 0 |
S - знаковый разряд числа
Рис.1. IEEE - стандарт внутреннего представления данных типа int
В компьютере с 16-ти разрядным процессором данные типа int занимают 2-а байта памяти (машинное слово), данные типа long занимают 4-ре байта. Старший бит знаковых типов int, short int, long int хранит знак числа. Если он равен нулю, число положительное, если он равен единице – число отрицательное. Положительные числа хранятся в памяти и вступают в операции в прямом коде, т.е. в обычном двоичном представлении числа. Отрицательные числа хранятся в памяти компьютера в дополнительном коде. Приведем правило получения дополнительного кода:
модуль отрицательного числа записывается в прямом коде в битах 14-0 или 30-0 «прижатым» вправо. В неиспользуемые старшие биты записываются нули;
в знаковый разряд бит 15 или 31 записывается 1;
формируется обратный код битов 14-0 или 30-0; для этого нуль заменяется единицей, а единица нулем;
к обратному коду числа прибавляется единица.
Например, обратный код числа –33 в формате int:
14 0 | ||
000.0000.0010.0001 | Прямой код | |
111.1111.1101.1110 | Обратный код | |
+ | ||
111.1111.1101.1111 | Дополнительный код FFDEh |
Константы типа int могут задаваться в десятичной, восьмеричной и шестнадцатеричной системой счисления. Признаком константы в шестнадцатеричной системе счисления являются 0х (0Х) в качестве первых ее символов. Запись такой константы может содержать цифры от 0 до 9, а также символы шестнадцатеричных цифр A-F. Любая константа, начинающаяся с нуля, рассматривается компилятором как заданная в восьмеричной системе счисления.
Если в записи константы встречается суффикс L (l), компилятор интерпретирует константу как long. Суффикс U(u) явно указывает на константу типа unsigned. Разрешается комбинировать оба суффикса в любом порядке, например 976LU.
При отсутствии суффиксов L(l) или U(u) точный тип константы определяется по ее записи (табл.2). Отрицательные константы получаются применением операции «унарный минус» к соответствующей положительной константе.
Переменная типа int объявляется с использованием ключевых слов unsigned, int, short, long. Синонимами будут сочетания ключевых слов: signed int и int; unsigned int и unsigned; short, sort int и signed short int; unsigned short и unsigned short int; long, long int и signed long int; unsigned long и unsigned long int.
При описании переменной ей может быть задано начальное значение. Например:
int i=0xabcd, j=04567, k=1;
Таблица 2
Целые константы и их тип при отсутствии суффиксов для компилятора
Borland C++ 3.1
Записанное значение константы | Тип, принимаемый компилятором |
Десятичные константы: От 0 до 32 767 От 32 768 до 2 147 483 647 От 2 147 483 648 до 4 294 967 295 > 4 294 967 295 | Int Long Unsigned long Генерируется ошибка |
Восьмеричные константы: От 00 до 077777 От 0100000 до 0177777 От 02000000 до 017777777777 От 020000000000 до 037777777777 > 037777777777 | Int Unsigned int Long Unsigned long Генерируется ошибка |
Шестнадцатиричные константы: От 0x0000 до 0x7FFF От 0x8000 до 0xFFFF От 0x10000 до 0x7FFFFFFF От 0x80000000 до 0xFFFFFFFF > 0xFFFFFFFF | Int Unsigned int Long Unsigned long Генерируется ошибка |
Если в описании опущен тип, он предполагается int. Например:
const a = 1;
static x;
все определяют объект типа int.
Данные типа char
Данные типа char занимают в памяти 1 байт. Код от 0 до 255 в этом байте задает один из 256 возможных символов. Закрепление конкретных символов за кодами задается так называемыми кодовыми таблицами. Для персональных компьютеров наиболее распространена ASCII-таблица.
Тип char является типом «целое». Данные типа char могут рассматриваться компилятором и как данные со знаком (signed char), и как данные без знака (unsigned char).
Если тип char рассматривается как signed, то старший бит его кода определяет знак. В случае unsigned char все восемь бит рассматриваются как код, а диапазон возможных значений от 0 до 255.
Константа типа char представляет собой символ заключенный в одиночные кавычки, например ‘A’, ‘$’. Внутренний код байта, соответствующего константе, определяется по кодовой таблице.
Представление группы символьных констант описаны ниже в параграфе 2.5.3.
Переменная типа char занимает 1 байт памяти и описывается с использованием ключевого слова char. При описании переменной ей можно задать начальное значение. Например:
char symbol=’\0100’; /* прописная латинская P */
char name=’0’, first=’\n’;
Дата добавления: 2017-01-29; просмотров: 501;