기타 강좌

3-5.문자형

3-5-가.문자

문자형이란 문자 하나를 표현하는 자료형이다. 컴퓨터는 원래 숫자밖에 모르기 때문에 문자도 숫자로 기억한다. 이때 어떤 숫자와 어떤 문자를 대응시키는가에 따라 여러 가지 인코딩 방식이 있는데 통상 아스키(ASCII) 코드 방식을 많이 사용한다. 아스키 코드는 0~255사이의 숫자에 문자를 대응시켜 놓았는데 이 표를 보면 대문자 A는 문자 코드 65(0x41)로 표현하며 숫자 1은 49(0x31)로 표현한다.

 

10

16

문자

10

16

문자

10

16

문자

10

16

문자

10

16

문자

0

0

Null

47

2F

/

68

44

D

89

59

Y

110

6E

n

7

7

Bell

48

30

0

69

45

E

90

5A

Z

111

6F

o

8

8

BS

49

31

1

70

46

F

91

5B

[

112

70

p

9

9

Tab

50

32

2

71

47

G

92

5C

113

71

q

10

A

LF

51

33

3

72

48

H

93

5D

]

114

72

r

13

D

CR

52

34

4

73

49

I

94

5E

^

115

73

s

32

20

공백

53

35

5

74

4A

J

95

5F

_

116

74

t

33

21

!

54

36

6

75

4B

K

96

60

`

117

75

u

34

22

"

55

37

7

76

4C

L

97

61

a

118

76

v

35

23

#

56

38

8

77

4D

M

98

62

b

119

77

w

36

24

$

57

39

9

78

4E

N

99

63

c

120

78

x

37

25

%

58

3A

:

79

4F

O

100

64

d

121

79

y

38

26

&

59

3B

;

80

50

P

101

65

e

122

7A

z

39

27

'

60

3C

<

81

51

Q

102

66

f

123

7B

{

40

28

(

61

3D

=

82

52

R

103

67

g

124

7C

|

41

29

)

62

3E

>

83

53

S

104

68

h

125

7D

}

42

2A

*

63

3F

?

84

54

T

105

69

i

126

7E

~

43

2B

+

64

40

@

85

55

U

106

6A

j

127

7F

Del

44

2C

,

65

41

A

86

56

V

107

6B

k

 

 

 

45

2D

-

66

42

B

87

57

W

108

6C

l

 

 

 

46

2E

.

67

43

C

88

58

X

109

6D

m

 

 

 

 위 표가 아스키 코드인데 문자를 숫자로 바꿨습니다.

A는 아스키코드 값이 65이며 소문자 a는 97, 즉 대문자A와 소문자 a는 32라는 아스키 코드 차이를 보입니다.

255개의 서로 다른 문자를 기억하기 위해서는 단지 1 바이트만 있으면 된다. 문자형 타입은 char인데 정수형과 마찬가지로 char형도 앞에 수식어를 붙일 수 있다. 길이는 1바이트로 고정되어 있으므로 long이나 short같은 크기에 대한 수식어는 붙일 수 없고 부호의 여부에 따라 unsigned, signed 수식어만 붙일 수 있다. unsigned char형은 8비트 길이를 가지므로 0~255까지를 표현할 수 있고 signed char 형은 1바이트의 좁은 공간에도 음수 표현을 위해 MSB를 부호 비트로 사용하므로 최대 표현 수가 절반으로 줄어든다.

 

타입

크기(바이트)

부호

범위

signed char

1

있음

-128 ~ 127

unsigned char

1

없음

0 ~ 255

 

부호 수식어없이 char라고만 쓰면 컴파일러와 설정 옵션에 따라 부호가 있을 수도 있고 없을 수도 있다. 대부분의 컴파일러들은 char형을 부호있는 타입으로 인식하므로 signed수식어는 생략할 수 있으며 signed char는 char 타입과 일단 동일하다. 컴파일러의 설정에 상관없이 부호 여부를 정확하게 지정하려면 signed, unsigned 수식어를 명시적으로 붙여야 한다. 문자 상수는 다음과 같이 표기한다.

 

'A', 'Z', '1', '&'

 

홑따옴표로 문자 하나를 감싸 주면 된다. 문자 상수는 아스키 코드값으로 해석되는데 'A'는 A문자의 아스키 코드값인 65와 같다. 다음 예제는 문자형 변수 ch를 선언하고 이 변수에 대문자 A를 대입한 후 출력해 본 것이다.

 

: char

#include <Turboc.h>

 

void main()

{

     char ch;

     ch='A';

     putch(ch);

}

 

ch 변수는 char형으로 선언되었으므로 문자 하나를 저장할 수 있는 1바이트가 할당될 것이다. 이 변수에 'A', 'B' 같은 문자형 상수를 대입할 수 있는데 예제에서는 'A'를 대입하여 ch 변수에 'A' 문자를 기억시켰다. 문자형 상수를 쓰는 대신 ch=65(또는 ch=0x41)와 같이 아스키 코드값을 직접 대입해도 결과는 동일하다. 하지만 누가 보더라도 ch=65; 보다는 ch='A'가 훨씬 더 읽기 쉽다.

문자형 변수를 출력할 때는 putch 함수를 사용한다. 또는 printf 함수의 %c 서식을 사용하여 printf("%c",ch); 로 출력할 수 있다. 예제를 실행해 보면 화면에 A 문자만 하나 출력될 것이다. 한글은 한 음절이 2바이트로 구성되기 때문에 문자형 변수에는 저장할 수 없으며 잠시 후에 배울 문자열을 사용해야 한다.

문자형은 문자 하나를 저장할 수 있는 적당한 길이를 가진다는 뜻으로 붙여진 이름이지 오로지 문자만 저장할 수 있다는 뜻은 아니다. char 타입은 실제로 8비트의 정수형이므로 크기가 작은 정수를 저장하는 용도로도 사용할 수 있다. 예를 들어 0~100까지의 범위를 가지는 점수라면 Score라는 이름으로 char형 변수를 선언한 후 여기에 저장하면 적당하다. 문자형이 일종의 정수형이라면 이 변수에 들어 있는 값은 과연 어떻게 해석될까? 다음 예제를 보자.

 

: charcontext

#include <Turboc.h>

 

void main()

{

     char ch='A';

 

     printf("문자일 때 = %c, 정수일 때 = %dn,그리고 힘들어 죽겟다..",ch,ch);

     gotoxy(ch,5);

     putch(ch);

}

 

문자열 변수가 문자로 해석될 것인가 정수로 해석될 것인가는 이 변수가 사용되는 위치에 따라 달라지는데 문자가 올 수 있는 곳이면 문자로, 정수가 올 수 있는 곳이면 정수로 해석된다. printf 함수의 %c 서식과 대응되면 문자가 출력될 것이고 %d와 대응되면 정수값이 출력될 것이다. putch(ch)는 ch값을 문자로 해석하며 gotoxh(ch, 8)은 ch를 x 좌표를 나타내는 정수로 해석한다.

TAG •
Comment '1'
  • ?
    제니스 2009.06.13 21:00

    후아후아...... 찬양하라 드디어 아스키 코드까지 왔도다

    #include <stdio.h>

    main()

    {

                printf("하아 정말 기분이 상쾌하군!");

                getch();

    }


List of Articles
분류 제목 글쓴이 날짜 조회 수
Vegas Pro 베가스 강좌 목록 아방스 2017.09.28 886
파이널컷X 파컷 강좌 목록 아방스 2017.06.18 757
기타 [mac/win] 어도비 cc 2014 오프라인 업데이트 파일 다운로드 주소 file 아방스 2015.05.10 481
기타 특별한 게임제작 특강! '게임제작, 어렵지 않아요!' 수퍼말이오 2015.10.28 337
게임기획 게임기획에 대한 강의2 1 현준갓 2015.11.01 652
어플개발 소프트아이스크림의 SRPG 만들기 - 1장 게임 제작 준비 3 소프트아이스크림 2016.06.15 856
어플개발 소프트아이스크림의 SRPG 만들기 - 2장 게임 타이틀 만들기 2 file 소프트아이스크림 2016.06.20 412
어플개발 소프트아이스크림의 SRPG 만들기 - 3장 게임 타이틀 BGM / 옵션 / 블러효과 만들기 2 file 소프트아이스크림 2016.06.27 402
에프터 이펙트 에펙 aec 파일 불러오기 오류 'After Effects error : Failed to connect to Adobe Premiere Pro Dynamic Link. (86 :: 1) file 아방스 2016.07.13 5953
OSX (맥) 맥(Mac) smi <-> srt 파일 상호 변환 프로그램 다운로드(무료) 1 file 아방스 2016.07.16 2629
어플개발 소프트아이스크림의 SRPG 만들기 - 4장 기본 문법과 배열 ! file 소프트아이스크림 2016.07.18 233
어플개발 소프트아이스크림의 SRPG 만들기 - 5장 게임 구성 및 잡담 + 배경 만들기 file 소프트아이스크림 2016.07.31 240
어플개발 소프트아이스크림의 SRPG 만들기 - 6장 텍스쳐 애니메이션 file 소프트아이스크림 2016.09.14 305
기타 [Windows] 윈도우 무비 메이커 2012 다운로드 링크 file 아방스 2016.11.19 757
어도비 프리미어 [프리미어cc 2015 강좌] pip 효과 만들기 아방스 2016.12.19 202
Vegas Pro 베가스 영화 비율 영상으로 만들기 (레터박스) 아방스 2016.12.19 717
어도비 프리미어 [어도비 프리미어] 영상에 자막 넣는 방법 아방스 2016.12.19 1106
어도비 프리미어 [프리미어 프로] 검은색 배경이 있는 자막 만들기 아방스 2016.12.19 10156
기타 [C++] 게임엔진 가이드 1. 게임 엔진이란? 쿼티만세12345 2017.01.01 249
기타 [C++] 게임엔진 가이드 2 App Layer. 쿼티만세12345 2017.01.01 544
기타 [C++] 게임엔진 가이드 3 App Class 쿼티만세12345 2017.01.01 270
어도비 프리미어 [프리미어프로] 음성변조 효과 적용 하기 아방스 2017.01.01 583
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19