기타 강좌

3-5-나.확장열

문자 상수는 홑따옴표안에 문자를 써서 표기한다. 문자 Y에 대한 문자 상수는 'Y'다. 이 상수를 키보드로 입력하려면 키보드에서 '를 치고 Y를 치고 '를 치면 된다. 그런데 따옴표안에 직접 입력할 수 없는 문자가 있다. 대표적으로 개행 코드를 들 수 있는데 Enter키를 누르는 즉시 정말로 다음 줄로 내려가 버리기 때문에 따옴표안에 개행 코드를 담아서 표현하는 것은 불가능하다.

또한 문자 상수를 표현할 때 사용하는 홑 따옴표 구두점도 문자 상수로 바로 표현할 수 없다. ''' 이렇게 쓰면 두 번째 '가 닫는 따옴표인지 문자 '를 나타내는지 컴파일러가 구분할 수 없다. 그래서 키보드로 직접 입력할 수 없는 문자들은 좀 특수한 방법으로 표현하는데 이를 확장열(Escape Sequence)이라고 한다. 확장열은 백슬레쉬() 문자 다음에 기호 하나를 써서 표현한다.

 

확장열

코드

설명

a

0x07

소리

b

0x08

스페이스

t

0x09

n

0x0a

개행

x##

0x##

16 코드

###

0###

8 코드

0x5c

백슬레쉬

'

0x27

홑따옴표

"

0x22

겹따옴표

?

0x3f

물음표

 

개행 코드는 n으로 표현하는데 이 코드는 First예제에서 이미 실습해 보았다. 탭이나 백 스페이스 같은 문자도 직접 키보드로 입력해서는 따옴표안에 표기할 수 없기 때문에 확장열로 표기해야 한다. 홑따옴표 문자 하나는 '''와 같이 표기할 수 없고 확장열을 사용해서 '''와 같이 표기해야 한다.

확장열 표기에 문자를 사용하기 때문에 문자 자체도 확장열이 될 수밖에 없다. 16진 코드는 키보드에 없는 문자에 대해 코드를 직접 쓸 때 사용한다. 'A'는 'x41'과 동일하다. 16진 코드를 확장열로 표기할 때 다음의 x는 반드시 소문자로 써야 하며 대문자는 인정하지 않는다. 문자열 상수내에 16진 코드를 직접 쓸 경우 16진수로 인식되는 모든 문자를 확장열로 취급한다는 점을 주의하자. 'x53trike"는 x53이 s이므로 "strike"이지만 "53econd"는 다음의 53ec까지를 16진수로 해석해 버리므로 "second"가 되지 않고 에러로 처리된다. 왜냐하면 53ec는 문자 코드 범위 바깥이므로 하나의 문자가 아니기 때문이다. 이런 경우는 16진 코드를 쓰지 않거나 다른 방법으로 문자열을 표기해야 한다.

확장열을 쓰는 이유는 꼭 키보드로 표현하지 못해서뿐만 아니라 환경에 따라 달라질 수 있는 코드를 논리적으로 표현하기 위해서이다. 개행을 하는 방식은 시스템마다 다른데 윈도우즈에서는 CR, LF의 조합으로, 유닉스는 LF만으로, 매킨토시는 CR만으로 개행 문자를 표현한다. C는 이런 방식에 상관없이 개행을 표현할 수 있는 확장열을 제공하고 프로그래머는 개행이 필요할 때 n이라고만 적으면 된다.

탭의 경우 일정한 자리를 띄우는 것이 아니라 현재 위치에서 다음 탭 위치로 이동하는 기능을 하므로 소스상에 입력된 탭에 의해 띄워진 빈칸과 실제 출력될 위치의 탭 크기가 다를 수 있다. 그래서 탭키를 문자열 상수에 직접 쓰지 않고 t 확장열로 표기하여 출력되는 상황에 맞게 탭을 적용하도록 한다.

TAG •

List of Articles
분류 제목 글쓴이 날짜 조회 수
Vegas Pro 베가스 강좌 목록 아방스 2017.09.28 886
파이널컷X 파컷 강좌 목록 아방스 2017.06.18 757
기타 XNA로 게임만들기 - 3. 자신만의 라이브러리를 만들자. 7 file 재훈군 2012.08.03 3454
기타 VirtualDub, Avanti, AviSynth를 사용한 초보적인(?!) DVD -> 동영상 파일 변환법. Alkaid 2012.08.27 3480
시네마4D Cinema4D 맵핑, 매터리얼 기초 메뉴얼 아방스 2010.08.18 3517
C언어 [C언어] for문과 while문에 대해 [Dark].Angel 2009.01.14 3521
C언어 소코반 실행파일+소스+스크린샷 file 정체불명 2012.01.25 3521
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Wide Green Button file 아방스 2011.12.07 3526
C언어 [C언어] 산술연산자, 대입연산자, 증감연산자 란? 2 [Dark].Angel 2009.01.14 3541
기타 윈도우 XP에서 16비트 도스가 실행이 안될때 스크립트 2008.07.25 3567
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Web 2.0 Download Buttons file 아방스 2011.12.07 3575
C언어 [비쥬얼 C++ 동영상 강좌] 01회 Visual C++개요, 간단한 C++맛보기 2 아방스 2009.01.12 3590
C언어 [-구름-] 배열로 큐 구현하기 3 [SST]구름 2009.06.13 3610
C언어 [ - Zennys - ] 제니스의 C언어 강좌 [아스키(ASCII)코드] 1 제니스 2009.06.13 3643
플러그인 [AE Plug-in]RedGiant.Holomatrix.v1.0 file 아방스 2010.03.23 3654
C언어 한글자씩 출력하기 file 정체불명 2012.01.21 3730
기타 인스톨 팩토리 사용법~ 5 file Skybound 2009.05.11 3773
기타 바이러스 제작 모험기 : 상편.shutdown명령어! 4 file 창조자 신 2009.05.16 3779
C언어 [C언어] 난수에 대해 2 [Dark].Angel 2009.01.14 3785
기타 [파이썬] for문 (여러 번 반복하기))9( 6 - 하늘 - 2009.09.11 3877
기타 포토샵 크기 조절 1 제니스 2008.06.22 3914
에프터 이펙트 에픽 플러그인 키젠에 대한 간단한 팁 ^^ 아방스 2010.06.09 3980
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19