기타 강좌

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
C언어 소코반 리팩토링 푸쉬푸쉬 file 정체불명 2012.01.25 2573
기타 [파이썬] 파이썬 시작하기 )3( 2 file - 하늘 - 2009.09.05 2573
기타 게임을 처음 제작하시는 초심자 분들께 7 TheEK 2012.07.03 2560
기타 [파이썬] 변수(변하는 수) )4( 4 - 하늘 - 2009.09.06 2559
C언어 락발라드 구구단~ file 정체불명 2009.05.02 2559
C언어 [ - Zennys - ] 제니스의 C언어 강좌 [열거형,정의] 제니스 2009.06.13 2558
기타 이런 옷은.. 처음이야 ! 패션 이미지들 3 file 꼴뚜기무침 2010.11.25 2551
기타 게임줄거리를 만들어볼까?!! 6 칼리아 2009.08.01 2522
기타 - 하늘 -의 리눅스 book! 리눅스를 배워보자! 5 - 하늘 - 2009.08.01 2515
기타 [VB6 강좌] 제2강 - 비주얼베이직과 인사하기 1 독도2005 2008.10.26 2515
기타 온라인 게임 서버의 구조도 4 file Saber 2010.09.06 2509
C언어 [C언어] 배열에 대해 1 [Dark].Angel 2009.01.14 2505
기타 유튜브 동영상 다운로드 하기 6 아방스 2010.11.03 2499
기타 [파이썬] if(만약 …이면) )8( 3 - 하늘 - 2009.09.10 2494
기타 프로그래밍 스킴 Scheme 4 "3두개 7두개로 24를 만들려면?" 프로그래밍으로 풀기 2 정체불명 2010.10.03 2479
기타 프로그래밍 스킴 7줄로 윈도우창에 그림을 출력하고 움직여보자. file 정체불명 2010.10.04 2477
C언어 [ - Zennys - ] 제니스의 C언어 강좌 [확장열] 제니스 2009.06.13 2472
C언어 [C언어] 이스케이프 시퀸스 [Dark].Angel 2009.01.14 2469
기타 RPG-Builder 3D - 캐릭터 그래픽을 드래곤 으로 바꿔보자! 5 file 더블오렌지 2011.08.08 2464
그래픽1개를 다운받아서 2개로 사용방법 어두운동굴 2008.07.29 2442
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19