Константы
Константами называют неизменяемые величины. Константы бывают литеральными (литералами) и типизированными. Литеральные константы характеризуются только своей величиной и неадресуемы. Типизированные константы имеют адрес и величину. Литеральные константы различаются на целые, вещественные (с плавающей точкой), символьные и строковые константы. Компилятор, выделив литеральную константу в качестве лексемы, относит ее к одному из типов по ее внешнему виду.
Форматы констант, соответствующие каждому типу, приведены в табл. I.2 Приложения I. Просмотрите их прямо сейчас.
Если требуется сформировать отрицательную целую или вещественную константу, то перед константой ставится знак унарной операции изменения знака (-), например: -218, -022, -0хЗС, -4.8, -0.1е4.
Вещественная константа в экспоненциальном формате представляется в виде мантиссы и порядка. Мантисса записывается слева от знака экспоненты (Е или е), порядок – справа от знака. Значение константы определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10. Пробелы внутри числа не допускаются, а для отделения целой части от дробной используется не запятая, а точка.
Символьные константы, состоящие из одного символа, занимают в памяти один байт и имеют стандартный тип char. Двухсимвольные константы занимают два байта и имеют тип int, при этом первый символ размещается в байте с меньшим адресом (о типах данных рассказывается в разделе 2.7).
Последовательности символов, начинающиеся с обратной косой черты, называют управляющими, или escape-последовательностями (табл. I.3 Приложения I). Символ обратной косой черты используется для представления:
- кодов, не имеющих графического изображения (например, \а – звуковой сигнал, \n – перевод курсора в начало следующей строки);
- символов апострофа ( ' ), обратной косой черты ( \ ), знака вопроса (?) и кавычки (");
- любого символа с помощью его шестнадцатеричного или восьмеричного кода, например, \073, \0xF5. Числовое значение должно находиться в диапазоне от 0 до 255.
Управляющая последовательность интерпретируется как одиночный символ. Если непосредственно за обратной косой чертой следует символ, не предусмотренный табл. I.3 Приложения I, результат интерпретации не определен. Если в последовательности цифр встречается недопустимая, она считается концом цифрового кода.
Управляющие последовательности могут использоваться и в строковых константах, называемых иначе строковыми литералами. Например, если внутри строки требуется записать кавычку, ее предваряют косой чертой, по которой компилятор отличает ее от кавычки, ограничивающей строку:
"Издательский дом \"Питер\""
Все строковые литералы рассматриваются компилятором как различные объекты. Две одинаковые строки будут занимать две различные области памяти.
Длинную строковую константу можно разместить на нескольких строках, используя в качестве знака переноса обратную косую черту, за которой следует перевод строки. Эти символы игнорируются компилятором, а следующая строка воспринимается как продолжение предыдущей. Например, строка
"Никто не доволен своей \
внешностью, но все довольны \
своим умом"
полностью эквивалентна строке
"Никто не доволен своей внешностью, но все довольны своим умом".
Строковый литерал представляется массивом символов и в конец каждого строкового литерала компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0. Поэтому длина строки всегда на единицу больше количества символов в ее записи.
Пустая символьная константа недопустима.