Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по С++.doc
Скачиваний:
51
Добавлен:
02.05.2014
Размер:
995.33 Кб
Скачать

R.2.5.2 Символьные константы

Символьной константой является один или несколько символов, заключенные в одиночные кавычки, например 'x'. Константа из одного символа имеет тип char. Значение константы из одного символа есть порядковый номер символа в таблице кодировки символов на данной машине. Символьные константы из нескольких символов имеют тип int. Значение такой константы зависит от реализации. Некоторые символы, не имеющие графического представления, как одиночная кавычка ',двойная кавычка ", знак вопроса ?, обратная дробная черта \, можно представлять комбинацией символов (начинающейся с \) в соответствии с приводимой ниже таблицей: конец строки NL (LF) \n горизонтальная табуляция HT \t вертикальная табуляция VT \v шаг назад BS \b возврат каретки CR \r перевод формата (авторегистр) FF \f сигнал BEL \a обратная дробная черта \ \\ знак вопроса ? \? одиночная кавычка ' \' двойная кавычка " \" восьмеричное число ooo \ooo шестнадцатеричное число hhh \xhhh Если за обратной дробной чертой следует символ, отличный от перечисленных, результат неопределен. Комбинация \ooo состоит из обратной дробной черты, а которой следуют одна, две или три восьмеричные цифры. Считается, что они определяют значение искомого символа. Комбинация \xhhh состоит из из обратной дробной черты, за которой следует x, а за ним, в свою очередь, следует последовательность шестнадцатеричных цифр. Считается, что она задает значение искомого символа. Нет ограничения на длину этой последовательности шестнадцатеричных цифр. Последовательность восьмеричных или шестнадцатеричных цифр оканчивается, когда встречается первый символ, который не есть восьмеричная или шестнадцатеричная цифра соответственно. Если значение символьной константы превосходит максимальное из char, то оно определяется реализацией. Символьная константа, которой непосредственно предшествует буква L, является широкой символьной константой, например, L'ab'. Такие константы имеют тип wchar_t, являющийся целочисленным типом ($$R.3.6.1), определенном в стандартном заголовочном файле <stddef.h>. Широкие символы предназначены для такого набора символов, где значение символа не помещается в один байт.

R.2.5.3 Константы с плавающей точкой

Константы с плавающей точкой состоят из целой части, символа точка, дробной части, e или E, целого показателя с возможным знаком и возможным окончанием, указывающим тип. Целая и дробная части состоят из последовательности десятичных (основание счисления десять) цифр. Или целая часть, или дробная часть (но не обе) могут отсутствовать. Или точка, или символ e (или E) вместе с показателем могут отсутствовать (но не оба). Тип константы с плавающей точкой есть double, если только он не задан явно с помощью окончания. Окончания f или F задают тип float, окончания l или L задают тип long double.

R.2.5.4 Строки литералов

Строка литералов есть последовательность символов (как они определены в $$R.2.5.2), заключенная в двойные кавычки, т.е. "...". Строка имеет тип "массив символов" и класс памяти static ($$R.3.5), она инициализируется заданными символами. Будут ли все строки различны (т.е. хранится в отдельных объектах), определяется реализацией. Соседние строки литералов конкатенируются. Символы в строках, полученных при конкатенации, хранятся отдельно. Например, после конкатенации "\xA" "B" строка будет содержать два символа '\xA' и 'B' (а не один шестнадцатеричный символ '\xAB'). После всех необходимых конкатенаций к строке добавляется символ '\0', чтобы программа, читающая строку, могла определить ее конец. Размер строки равен числу всех ее символов, включая символ завершитель строки. Внутри строки перед символом двойной кавычки " должен идти символ \. Строка литералов, перед которой непосредственно идет символ L, считается широкосимвольной строкой, например, L"asdf". Такая строка имеет тип "массив элементов типа wchar_t", где wchar_t целочисленный тип, определенный в стандартном заголовочном файле <stddef.h>. Результат конкатенации обычных и широкосимвольных строк литералов неопределен.