Читать «Справочное руководство по C++» онлайн - страница 4

Бьярн Страустрап

Символьная константа, которой непосредственно предшествует буква 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›. Результат конкатенации обычных и широкосимвольных строк литералов неопределен.

R.3 Основные понятия

Имя обозначает объект, функцию, множество функций, элемент перечисления, тип, член класса, шаблон типа, значение или метку. Имя становится известно в программе с помощью описания. Имя можно использовать только в пределах части программы, называемой областью видимости имени. Имя имеет тип, который задает его использование. Имя, используемое в более чем одной единице трансляции, может обозначать один и тот же (а может и разные) объект, функцию, тип, шаблон типа или значение, в зависимости от компоновки (§R.3.3) этих единиц трансляции.