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