기타 강좌

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 913
파이널컷X 파컷 강좌 목록 아방스 2017.06.18 803
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Buttons Vector Graphic file 아방스 2011.12.07 1201
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - 4 Web Buttons file 아방스 2011.12.07 1156
어플개발 m-BizMaker 코딩없이 어플 개발 할수있는 프로그램. 소개 1 아방스 2014.11.25 1129
에프터 이펙트 레이져 총 효과 제작 Sci-Fi Weapon FX file 아방스 2014.07.23 1121
어도비 프리미어 [어도비 프리미어] 영상에 자막 넣는 방법 아방스 2016.12.19 1106
시네마4D [텍스트 애니메이션 강좌] Cascading Text Animation Tutorial file 아방스 2014.07.16 1067
어도비 프리미어 [프리미어프로cc2017.1] 제목 메뉴와 자막 템플릿이 사라졌어요! 아방스 2017.08.01 994
어도비 프리미어 [프리미어 프로 cc2017 강좌] 멀티캠 편집 방법 아방스 2017.08.01 876
기타 에러 메세지를 텍스트로 복사하기 1 file 값싼뭉크 2014.04.26 875
메이킹 영상 완좌의 게임 시즌4 VFC 메이킹 릴 아방스 2014.07.09 873
어플개발 소프트아이스크림의 SRPG 만들기 - 1장 게임 제작 준비 3 소프트아이스크림 2016.06.15 858
어도비 프리미어 [프리미어 CC2017 강좌] 줌인드랜지션 무료 템플릿 (적용 및 사용법) file 아방스 2017.08.01 802
메이킹 영상 [매이킹 영상] CASTLEVANIA: LORDS OF SHADOW 2 아방스 2014.07.09 791
어도비 프리미어 [프리미어cc2017] 프록시 편집에 대해서 아방스 2017.08.01 790
어도비 프리미어 [프리미어 프로 강좌] 영상 및 사진 크기 일괄 설정하기 아방스 2017.08.01 784
기타 [Windows] 윈도우 무비 메이커 2012 다운로드 링크 file 아방스 2016.11.19 758
C언어 c언어로 구구단 프로그래밍 하는 영상 1 정체불명 2014.11.02 746
기타 폴더 100개 일괄적으로 만들기 정체불명 2014.11.02 744
OSX (맥) 맥 서버 MYSQL 오류 mysqldump: Got error: 145 해결법 아방스 2014.11.19 732
Vegas Pro 베가스 영화 비율 영상으로 만들기 (레터박스) 아방스 2016.12.19 719
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19