이스케이프 문자는 뭘까? (Escape Character)
업데이트:
이스케이프 문자는 대부분의 프로그래밍 언어에 방대하게 사용되는 개념이다. 프로그래밍 언어의 특성(특수 기호 등을 구문의 구성에 사용하는 등)에 의해 표현 할 수 없거나, 표현 하기 어려운 문자(공백, 들여쓰기 등) 등을 표현하기 위해 사용 하기 때문에 원 뜻에 벗어나는(Escape) 의미로 사용되는 문자(Character)라는 의미를 갖는다.
이스케이프 시퀀스
백슬래시\
(한글 폰트로 원화₩
표기) 뒤에 하나의 문자 혹은 숫자의 조합을 이스케이프 시퀀스라고 한다. 다른말로는 확장열(확장 비트열), 제어 시퀀스가 있다.
이에 이스케이프 시퀀스를 따르는 문자를 ‘이스케이프 문자(Escape Character)’라고 한다.
그러나 이스케이프 문자는 단독으로 의미를 가지지 않고, 반드시 뒤에 문자가 오는 이스케이프 시퀀스 형태로 사용되기 때문에, 이스케이프 문자는 종종 이스케이프 시퀀스와 같은 의미로 사용되기도 한다.
예시
큰따옴표"
의 경우 프로그래밍 언어에서 문자열을 정의하는데 주로 사용된다. 따라서 문자열 안에 큰따옴표를 이스케이프 문자 없이 집어 넣는것은 불가능하다. 이 때, \"
를 사용하면 문자열 안에 큰따옴표를 문자로 인식시켜 집어넣을 수 있게 된다. 같은 방식으로 작은따옴표\'
, 백슬래시\\
도 문자로 표현이 가능하다.
비슷한 경우로 C언어 문법의 경우 printf() 함수와 scanf() 함수 등에서 자료형이 무엇인지 구분 할 때 %
를 사용한다.(C 언어의 서식 지정자) 때문에 문자열에 %
를 넣으려면 %%
를 사용해야 한다.
다음은 파이썬으로 문자열 개발자는 "Hello World"와 함께 시작한다.
를 출력하려는 의도를 가진 코드이다.
1
print("개발자는 "Hello World"와 함께 시작한다.")
실행 결과
syntaxerror: invalid syntax
"개발자는 "
과 "와 함께 시작한다."
부분이 쌍따옴표로 구분되어 중간의 Hello World
가 문자열로 취급되지 않아 구문 오류(Syntax Error)가 발생해 프로그램이 실행되지 않는다.
위 코드를 이스케이프 문자를 사용 해 큰따옴표를 문자로 인식시켜주면 의도한 대로 작동하게 된다.
1
print("개발자는 \"Hello World\"와 함께 시작한다.")
실행 결과
개발자는 "Hello World"와 함께 시작한다.
다음은 C언어 문법에서 %%
를 사용하는 예시 코드이다.
1
2
3
4
5
6
#include <stdio.h>
int main()
{
printf("인간이 뇌를 10%만 사용한다는 것은 거짓이다.\n");
return 0;
}
실행 결과
인간이 뇌를 10%만 사용한다는 것은 거짓이다.
위와 같이 컴파일이 되고, 결과도 의도대로 나온다. 그러나 다음과 같은 경고가 표시된다.
Invalid conversion specifier '\ub9cc'
경고 표시의 원인을 해결하고 올바른 형태로 출력하려면 위 코드를 다음과 같이 수정해야 한다.
1
printf("인간이 뇌를 10%%만 사용한다는 것은 거짓이다.\n");
이스케이프 문자 목록
다음은 주로 사용되는 이스케이프 문자 목록이다.
문자 | 설명 |
---|---|
\a | 시스템 경고음 출력 |
\b | 백스페이스 |
\n | 줄 바꿈 (개행) |
\t | 수평 탭 (들여쓰기) |
\\ | \ |
' | ’ |
" | ” |
\ooo | 해당 8진수 값의 ASCII 문자 (ooo 대신 8진수 값 사용) |
\xhhh | 해당 16진수 값 000의 ASCII 문자 (hhh 대신 16진수 값 사용) |
\u(문자 값) | 문자 값에 해당하는 유니코드 문자를 출력한다. |