기타 강좌

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
기타 응용..에 관한 간단한 고찰.(??) 개촙포에버 2011.10.13 1770
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - “Call To Action” Buttons file 아방스 2011.12.07 1750
C언어 [C 언어 강의] 데이터 출력 함수 printf() file 마린레이 2011.10.12 1746
기타 [루비][네트워크] 다른 컴퓨터에서 명령어 받아서 실행후 결과 돌려주는 서버 자연철학의수학적원리 2013.10.25 1736
기타 [루비] 프로그래밍 공부하는 법 1 자연철학의수학적원리 2013.10.25 1724
C언어 정체불명의 프로그래밍 입문 main 함수작성 3 file 정체불명 2012.01.18 1721
기타 [RPGXP] 기술 데이터 읽기 실패 해결법 2 file 맵만드는중.. 2014.02.17 1717
C언어 [비쥬얼 C++ 동영상 강좌] 07회 GDI 를 배우자 - 1 아방스 2009.01.12 1710
C언어 [C 언어 강의] 데이터 입력 함수 scanf() file 마린레이 2011.11.06 1709
C언어 정체불명의 프로그래밍입문 4 실행 디버깅 1 정체불명 2012.01.18 1684
C언어 정체불명의 프로그래밍 입문 중간체크 file 정체불명 2012.01.18 1611
C언어 [비쥬얼 C++ 동영상 강좌] 04회 클래스 파일 분석하기 - 1 아방스 2009.01.12 1609
C언어 [C 언어 강의] 2. 프로그램의 기본 구조 마린레이 2011.10.05 1607
C언어 [비쥬얼 C++ 동영상 강좌] 05회 클래스 파일 분석하기 - 2 아방스 2009.01.12 1597
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Carbonalistic Web Buttons file 아방스 2011.12.07 1588
기타 [루비][네트워크] 간단한 서버 만들기 자연철학의수학적원리 2013.10.25 1510
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Call To Action file 아방스 2011.12.07 1495
기타 [루비][네트워크][GUI] 서버에 명령어 보내서 실행결과 얻는 클라이언트 file 자연철학의수학적원리 2013.10.25 1471
기타 [루비] 한글 사용하기 2 자연철학의수학적원리 2013.10.25 1469
어도비 프리미어 프리미어 cc 2014 새로운 기능 - Premiere Pro CC – April 2014 – New Features 아방스 2014.07.07 1443
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19