Escape sequences
이스케이프 시퀀스는 문자열 리터럴 과 문자 상수 내에서 특정 특수 문자를 표현하는 데 사용됩니다.
다음 이스케이프 시퀀스를 사용할 수 있습니다. ISO C는 백슬래시 뒤에 여기에 나열되지 않은 문자가 오는 경우 진단 메시지를 요구합니다:
|
이스케이프
시퀀스 |
설명 | 표현 |
|---|---|---|
| 기본 이스케이프 시퀀스 | ||
\'
|
작은따옴표 |
ASCII 인코딩에서
0x27
바이트
|
\"
|
큰따옴표 |
ASCII 인코딩에서
0x22
바이트
|
\?
|
물음표 |
ASCII 인코딩에서
0x3f
바이트
|
\\
|
백슬래시 |
ASCII 인코딩에서
0x5c
바이트
|
\a
|
경고음 |
ASCII 인코딩에서
0x07
바이트
|
\b
|
백스페이스 |
ASCII 인코딩에서
0x08
바이트
|
\f
|
폼 피드 - 새 페이지 |
ASCII 인코딩에서
0x0c
바이트
|
\n
|
줄 바꿈 - 새 줄 |
ASCII 인코딩에서
0x0a
바이트
|
\r
|
캐리지 리턴 |
ASCII 인코딩에서
0x0d
바이트
|
\t
|
수평 탭 |
ASCII 인코딩에서
0x09
바이트
|
\v
|
수직 탭 |
ASCII 인코딩에서
0x0b
바이트
|
| 숫자 이스케이프 시퀀스 | ||
\
nnn
|
임의의 8진수 값 |
코드 유닛
nnn
|
\x
n...
|
임의의 16진수 값 |
코드 유닛
n...
(임의 개수의 16진수 숫자)
|
| 유니버설 문자 이름 | ||
\u
nnnn
(C99부터)
|
유니코드
허용 범위 내 값;
여러 코드 유닛으로 결과될 수 있음 |
코드 포인트
U+
nnnn
|
\U
nnnnnnnn
(C99부터)
|
유니코드
허용 범위 내 값;
여러 코드 유닛으로 결과될 수 있음 |
코드 포인트
U+
nnnnnnnn
|
유니버설 문자 이름의 범위
유니버설 문자 이름이
|
(C99부터) |
참고 사항
\ 0 는 널 종료 문자열에서 종료 널 문자를 나타내기 때문에 가장 일반적으로 사용되는 8진수 이스케이프 시퀀스입니다.
개행 문자 \n 는 텍스트 모드 I/O 에서 사용될 때 특별한 의미를 가집니다: 운영체제별 개행 바이트 또는 바이트 시퀀스로 변환됩니다.
8진수 이스케이프 시퀀스는 최대 세 자리의 8진수 숫자 길이 제한을 가지지만, 더 빨리 유효하지 않은 8진수 숫자가 나타나면 그 지점에서 종료됩니다.
16진수 이스케이프 시퀀스는 길이 제한이 없으며 유효한 16진수 숫자가 아닌 첫 번째 문자에서 종료됩니다. 단일 16진수 이스케이프 시퀀스로 표현된 값이 이 문자열 리터럴 또는 문자 상수에 사용된 문자 타입( char , char8_t (C23부터) , char16_t , char32_t (C11부터) , 또는 wchar_t )이 나타내는 값의 범위에 맞지 않는 경우, 결과는 정의되지 않습니다.
|
좁은 문자열 리터럴 내의 유니버설 문자 이름 또는 16비트 문자열 리터럴 (C11부터) 은 둘 이상의 코드 유닛에 매핑될 수 있습니다. 예를 들어, \U0001f34c 는 UTF-8에서 4개의 char 코드 유닛( \xF0\x9F\x8D\x8C )이며 UTF-16에서는 2개의 char16_t 코드 유닛( \xD83C\xDF4C )입니다 (C11부터) . |
(C99부터) |
|
ISO/ISC 10646에서 정의되지 않은
|
(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 문자 표시 의미론 (p: 18-19)
-
- 6.4.3 유니버설 문자 이름 (p: 44)
-
- 6.4.4.4 문자 상수 (p: 48-50)
- C11 표준 (ISO/IEC 9899:2011):
-
- 5.2.2 문자 표시 의미론 (p: 24-25)
-
- 6.4.3 유니버설 문자 이름 (p: 61)
-
- 6.4.4.4 문자 상수 (p: 67-70)
- C99 표준 (ISO/IEC 9899:1999):
-
- 5.2.2 문자 표시 의미론 (p: 19-20)
-
- 6.4.3 유니버설 문자 이름 (p: 53)
-
- 6.4.4.4 문자 상수 (p: 59-61)
- C89/C90 표준 (ISO/IEC 9899:1990):
-
- 2.2.2 문자 표시 의미론
-
- 3.1.3.4 문자 상수
참고 항목
|
C++ 문서
에서
Escape sequences
참조
|