Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Целые константы могут быть десятичными, восьмеричными и шестнадцатеричными.






Десятичная целая константа определена как последовательность десятичных цифр, начинающаяся не с нуля, если это не число нуль, например: 16, 897216, 0, 21. Отрицательные константы - это константы без знака, к которым применена операция изменения знака.

Восьмеричные целые константы начинаются всегда с нуля, например 016 имеет десятичное значение 14.

Шестнадцатеричная константа - это последовательность шестнадцатеричных цифр, которой предшествует 0x. В набор шестнадцатеричных цифр кроме десятичных входят латинские буквы от а (или А) до f (или F). Таким образом, 0х16 имеет десятичное значение 22, a 0xF - десятичное значение 15.

Диапазон допустимых целых положительных значений - от 0 до 4294967295. Константы, превышающие указанное максимальное значение, вызывают ошибку на этапе компиляции. Абсолютные значения отрицательных констант не должны превышать 2147483648.

В зависимости от значения целой константы, компилятор по-разному представляет её в памяти ЭВМ. О форме представления данных в памяти ЭВМ говорят, используя понятие тип данных.

Соответствие между значением целых констант и автоматически выбираемыми для них типами данных отражено в табл. 1.2 для компиляторов семейства IBM PC/XT/AT (16-ти разрядных компиляторов).

Таблица 1.2

Целые константы и выбираемые для них типы

Диапазоны значений констант

Десятичные Восьмеричные Шестнадцатеричные Тип данных
от 0 до 32767 от 00 до 077777 от 0х0000 до 0х7FFF int
  от 0100000 до 0177777 от 0х8000 до 0xFFFF unsigned int
от 32768 до 2147483647 от 0200000 до 017777777777 от 0x10000 до 0x7FFFFFFF long
от 2147483647 до 4294967295 от 020000000000 до 037777777777 от 0x80000000 до 0xFFFFFFFF unsigned long
> 4294967295 > 037777777777 > 0xFFFFFFFF ошибка

В заголовке < limit.h> определены предельные значения целых величин различных типов. Младший тип целых констант – int имеет диапазон допустимых значений от – 32767 до 32767.

Для 32-разрядных компиляторов диапазон значений типа int обычноравен - 2147483647 и 2147483647. Для типа unsigned int (" беззнаковый целый") минимальное значение равно 0, а максимальное - 4294967295. Предельные значения целых констант даны в заголовке< climit.h>. И в реализациях 32-разрядных компиляторов, в которых не различаются типы int - " целое" и long - " длинное целое" при использовании целых чисел, превышающих значение 4294967295, возникает ошибка.

Если программиста по каким-либо причинам не устаревает тот тип, который компилятор приписывает константе, то он может явным образом изменить тип. Можно явно указать тип, используя суффиксы L, l (long) и U, u (unsigned). Например, константа 64L будет иметь тип long, хотя значению 64 должен быть приписан тип int, как это видно из табл. 1.2. Для одной константы можно использовать два суффикса в произвольном порядке. Например, константы 0x22ul, 0x33Lu будут иметь тип unsigned long.

Перечислимые константы. Стандарт относит к целочисленным константам и перечислимые. Перечислимые константы (или константы перечисления) определяются с помощью служебного слова enum. Это целочисленные константы, которым даются уникальные имена по следующему правилу:

enum { список идентификаторов констант = значения констант }

Имена констант уникальны, но значения могут повторяться. Кроме того, значения в определении можно опускать. Константы автоматически получат значения, которые будут начинаться от нуля, а затем увеличиваться на 1 для следующей константы. Возможны определения, в которых присутствуют определения констант со значением и без значения. В этом случае константы без значения автоматически получают значения. Правило о последовательном увеличении на 1 значения констант действует и в этом случае. Например, определение:

enum { a, b =0, c, d, e=2, f };

вводит следующие константы:

a = =0, b = =0, c= =1, d = =2, e = =2, f = =3.

Вещественные константы.

Для представления вещественных чисел используются константы, представляемые в памяти компьютера в форме с плавающей точкой. Даже не отличаясь от целой константы по значению, вещественные константы имеют другую форму внутреннего представления в ЭВМ. При операциях с такими константами требуется использование арифметики с плавающей точкой. Компилятор распознает вещественную константу по внешним признакам.

Вещественная константа может включать следующие шесть частей: целая часть (десятичная целая константа); десятичная точка; дробная часть (десятичная целая константа); признак экспоненты " е " или " Е "; показатель десятичной степени (десятичная целая константа, возможно, со знаком); суффикс F (или f), либо L (или l).

При записи констант с плавающей точкой могут опускаться целая или дробная часть (но не одновременно); десятичная точка или символ экспоненты с показателем степени (но не одновременно). Примеры констант с плавающей точкой:

125..0.17 3.141F 1.2е-5.314159Е25 2.77 2E+6L

Вещественная константа в экспоненциальном формате представляется в виде мантиссы и порядка. Мантисса записывается слева от знака экспоненты (E или e), порядок — справа от знака. Значение константы определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10. Обратите внимание, что пробелы внутри числа не допускаются, а для отделения целой части от дробной используется не запятая, а точка.

При отсутствии суффиксов вещественное число имеет форму внутреннего представления, которой соответствует тип данных double. Добавив суффикс F или f, константе придают тип float и соответственно, тип long double, если в ее конце суффиксы L или l. В табл. 1.3 приведены диапазоны возможных значений и длины внутреннего представления (размеры в битах) данных вещественного типа в конкретной реализации С++ (компилятор DJGPP).

Таблица 1.3

Данные вещественного типа

Тип данных Размер в битах Диапазон значений
float   от 3.4E-38 до 3.4E+38
double   от 1.7E-308 до 1.7E+308
long double 96 (80) от 3.4E-4932 до 1.1E+4932





© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.