본문 바로가기

Developing/C 언어

[C언어 강의 - 04] 데이터 타입

정수 데이터 타입

 

 

실수 데이터 타입

 

 

 문자 데이터 타입

문자는 ' A ' 와 같이 작은따옴표(')로 묶어서 표현한다고 이전 포스팅에서 설명을 한 적이 있다. C언어에서 문자와 관련된 데이터 타입에는 char 와 unsigned char인데,

이를 표로 나타내면 다음과 같다.

 

데이터 타입 

크기 

표현 범위 

char 

1 바이트 

-128 ~ 127 

unsigned char 

1 바이트 

0 ~ 255 

 

사실 char 타입을 127까지 표현되게 크기를 고정한것은 영어권에서 사용되는 대부분의 글자(영대문자,영소문자,특수문자 몇가지, 숫자)들이 ASCII를 사용하기 때문이다.

ASCII는 각 문자를 7 비트로 표현하므로 총 128개의 문자를 표현할 수 있기 떄문에 1바이트 크기의 char/unsigned char 데이터 타입의 변수는 모든

ASCII 문자를 표현할 수 있게 된다.

 

또한, 문자 ' A '에 대한 ASCII 코드는 1000001인데, 이를 10진수로 변환하면 65가 된다. ( C 언어에서는 문자와 대응되는 ASCII 값을 같게 인식)

결국 문자 'A'와 65가 같은 의미를 지니게 되고, 모든 문자는 정수로 표현될 수 있다는 소리기 떄문에 다음과 같이 int 데이터 타입 변수에 문자를 저장해도

별다른 문제가 발생하지 않는다. ( int ch = ' A ' ) ;

 

ASCII 표는 구글링을 하면 쉽게 찾을 수 있기 때문에 여기서는 프로그램 로직을 이해하기 위해 몇가지 문자에 대한 코드만 설명한다. 우선 다음의 표를 보자.

 

문자 

ASCII 코드 

A

1000001

B

1000010

C

1000011

a

1100001

b

1100010

c

1100011

 

우선 영문자 A/a 와 B/b 의 차이는 1 차이이다. B/b 와 C/c의 차이도 1이다. 또한 영대문자 A와 영소문자 a의 차이를 이해하면(본인이 찾아보길 바라며, 설명 하지 않음)

다음과 같은 프로그램을 만들 수 있다.

 

05 행에서 char 타입의 ch 변수에 문자 'A'를 대입하며, 변수 b를 선언한다.

06 행에서 b의 값을 ch+1로 지정한다. (즉, A의 다음 문자인 B를 뜻함)

 

실행 결과는 아래와 같다.

 

 

 

 

아래의 프로그램은 07 행의 설명처럼 영소문자를 영대문자로 변환하는 프로그램이다.

09 행에서 변환할 소문자를 입력 받는다.

11 행 끝 부분을 보면 소문자와 대문자 간의 차이를 이해하고 이를 변환하는 식을 볼 수 있다. (ch - 'a' + 'A')

 

실행 결과는  아래와 같다.

 

 

* 아직 조건문(조건에 따라 맞으면 수행1 이라는 부분을 수행하고, 조건에 틀리면 수행2 라는 부분을 수행하는 개념)을 배우지 않았기 때문에 문자를 입력 받아서

   해당 문자가 대문자면 소문자로, 소문자면 대문자로 변환하는 프로그램을 만들 수는 없다. 그러나 나중에 포스팅 할 조건문을 배우게 되면 아주 간단히 코딩 할 수 있다.