Последовательности экранирования
Последовательности экранирования используются для представления определенных специальных символов в строковых литералах и символьных константах.
Доступны следующие последовательности экранирования. Стандарт ISO C требует диагностики, если обратный слэш следует за любым символом, не указанным здесь:
| Последовательность экранирования | Описание | Представление |
|---|---|---|
| Простые последовательности экранирования | ||
\' | одинарная кавычка | байт 0x27 в кодировке ASCII |
\" | двойная кавычка | байт 0x22 в кодировке ASCII |
\? | знак вопроса | байт 0x3f в кодировке ASCII |
\\ | обратный слэш | байт 0x5c в кодировке ASCII |
\a | звуковой звонок | байт 0x07 в кодировке ASCII |
\b | возврат на позицию ввода | байт 0x08 в кодировке ASCII |
\f | подача формы - новая страница | байт 0x0c в кодировке ASCII |
\n | перевод строки - новая строка | байт 0x0a в кодировке ASCII |
\r | возврат каретки | байт 0x0d в кодировке ASCII |
\t | горизонтальная табуляция | байт 0x09 в кодировке ASCII |
\v | вертикальная табуляция | байт 0x0b в кодировке ASCII |
| Числовые последовательности экранирования | ||
\nnn | произвольное восьмеричное значение | код nnn |
\xn... | произвольное шестнадцатеричное значение | код n... (произвольное количество шестнадцатеричных цифр) |
| Универсальные имена символов | ||
\unnnn (с C99) | значение Unicode в допустимом диапазоне; может привести к нескольким кодовым единицам | код символа U+nnnn |
\Unnnnnnnn (с C99) | значение Unicode в допустимом диапазоне; может привести к нескольким кодовым единицам | код символа U+nnnnnnnn |
Диапазон универсальных имен символовЕсли универсальное имя символа соответствует коду символа, который не | (с C99) |
Примечания
\0 является наиболее часто используемой восьмеричной последовательностью экранирования, потому что она представляет завершающий нулевой символ в строках с нулевым завершением.
Символ новой строки \n имеет специальное значение при использовании в ввода-выводе в текстовом режиме: он преобразуется в специфичный для операционной системы байт или последовательность байтов.
Восьмеричные последовательности экранирования имеют предельную длину в три восьмеричные цифры, но завершаются первой цифрой, которая не является допустимой восьмеричной цифрой, если она встречается раньше.
Шестнадцатеричные последовательности экранирования не имеют предельной длины и завершаются первой цифрой, которая не является допустимой шестнадцатеричной цифрой. Если значение, представленное одной шестнадцатеричной последовательностью экранирования, не помещается в диапазон значений, представленных типом символа, используемым в этом строковом литерале или символьной константе (char, char8_t(с C23), char16_t, char32_t(с C11), или wchar_t), результат является неопределенным.
| Универсальное имя символа в узкой строке литерала или 16-битный строковый литерал(с C11) может отображаться более чем в одной кодовой единице, например, | (с C99) |
| Универсальное имя символа, соответствующее коду символа большему чем |
(с C99) (до C23) |
| Последовательность экранирования с символом вопроса | (до C23) |
Пример
#include <stdio.h>
int main(void)
{
printf("This\nis\na\ntest\n\nShe said, \"How are you?\"\n");
}Вывод:
This is a test She said, "How are you?"
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 5.2.2 Семантика отображения символов (с. 18-19)
- 6.4.3 Универсальные имена символов (с. 44)
- 6.4.4.4 Символьные константы (с. 48-50)
- Стандарт C11 (ISO/IEC 9899:2011):
- 5.2.2 Семантика отображения символов (с. 24-25)
- 6.4.3 Универсальные имена символов (с. 61)
- 6.4.4.4 Символьные константы (с. 67-70)
- Стандарт C99 (ISO/IEC 9899:1999):
- 5.2.2 Семантика отображения символов (с. 19-20)
- 6.4.3 Универсальные имена символов (с. 53)
- 6.4.4.4 Символьные константы (с. 59-61)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 2.2.2 Семантика отображения символов
- 3.1.3.4 Символьные константы
См. также
| Документация C++ для Последовательности экранирования |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/language/escape