Строка литералов есть последовательность символов (как они определеныв $$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)этих единиц трансляции. Объект имеет область для его хранения ($$R.3.7). Поименованныйобъект имеет класс памяти ($$R.3.5), который определяет его времяжизни. Интерпретация значений, хранящихся в объекте, определяетсятипом выражения, задающего доступ к объекту.