본문 바로가기
C언어

C언어 자료형에 대해서 공부하자! int, char의 특징과 크기

by 여름코딩 2023. 3. 15.
반응형

안녕하세요 판타지코딩입니다!

 

C언어로 코드를 작성할 때에는 자료형을 고려해야 합니다. 자료형에 따라서 변수에 담을 수 있는 데이터가 정해지기 때문입니다. 그래서 오늘은 자료형이 무엇인지 함께 알아보고, 가장 많이 쓰이는 int형과 char형에 대해서 공부해 보도록 하겠습니다!

 

자료형

자료형이란?

자료형은 변수에 어떤 형태의 데이터가 담길 수 있는지 결정하는 것입니다! 정수형이라면 정수 데이터가 담길 수 있고, 문자형이라면 문자 데이터가 담길 수 있습니다. 아래의 코드를 보면서 설명해 보겠습니다.

int num;
char str;

int형 변수 num과 char형 변수 str을 생성했습니다. int는 '정수형'입니다. 그러므로 num에는 정수 데이터인 1, 0, -1 등이 저장될 수 있습니다. char는 '문자형'입니다. 그래서 str에는 'a', '!', '1' 처럼 문자 데이터가 담길 수 있습니다. 그럼 이번에는 각 변수에 알맞은 데이터를 저장하는 코드를 작성해 보겠습니다.

 

자료형에 부합하는 데이터 저장하기

int num;
num = 1;

char str;
str = 'a';

int형 변수 num에는 정수 1을 저장했습니다. 그리고 char형 변수 str에는 문자 'a'를 저장했습니다. 이처럼 각 자료형에 맞는 데이터를 저장해주면 됩니다.

 

그럼 이번에는 오류가 발생하는 코드를 보겠습니다.

int num;
num = 'a';

char str;
str = '1';

이번에는 int형 변수 num에 문자 'a'를 저장하고, char형 변수 str에 숫자 '1'을 저장했습니다. 먼저 num에 저장한 'a'는 오류가 발생합니다. num은 정수를 저장할 수 있는 int형 변수이기 때문에 문자 'a'를 저장하면 옳지 않은 데이터가 저장된 것이기 때문입니다. 그럼 이번에는 char형 변수 str에 저장된 '1'을 보겠습니다. 이 코드는 어떨까요? 정상적인 코드입니다!

 

char형 변수 str은 문자형 데이터가 저장되어야 합니다. 코드를 보시면 str에 '1'이 저장되어 있는데, 여기서 '1'은 '문자 1'로써 저장된 것입니다. 숫자 1이 저장되었다면 오류가 발생했겠지만, 문자 1이 저장된 것이라면 정상적인 코드가 됩니다. 그럼 숫자 1과 문자 1은 어떤 의미일까요? 아래 코드에서 차이점을 확인해 보겠습니다.

 

문자를 저장하는 방법과 숫자를 저장하는 방법

char str1;
str1 = 1;     //숫자 1

char str2;
str2 = '1';   //문자 '1'

str1에 저장된 1은 작은 따옴표 없이 그대로 정수 형태로 표현되었습니다. 그러므로 컴파일 오류가 발생하게 됩니다. str2에 저장된 '1'은 작은 따옴표 안에 작성되어 있으므로 '문자' 형태로 저장된 것입니다. 그래서 같은 1을 표현하더라도 문자를 표현한 것인지 숫자를 표현한 것인지에 따라서 오류 여부가 결정됩니다.

 

그럼 이번에는 실행은 가능하지만, 오류가 발생하는 또 다른 경우를 보겠습니다.

char str;
str = 'abc';

char형 변수 str에 문자열 'abc'를 저장했습니다. 문자를 저장할 수 있는 자료형이기 때문에 문자 3개를 한 번에 저장해 보았는데요, 과연 실행 결과가 어떻게 될까요?

printf("%c", str);
c

가장 마지막 문자인 'c'만 출력되었습니다. 왜 이런 결과가 나왔을까요? char형은 문자 1개만 저장할 수 있는 자료형이기 때문입니다. 만약 여러개의 문자를 저장하고 싶다면 동적 할당을 해야 합니다. 동적 할당이란 개발자가 원하는 데이터의 크기 만큼 메모리를 직접 하당하는 방식입니다. char형은 1byte로 고정되어 있기 때문에 동적 할당을 통해서 원하는 크기를 할당하면 추가적인 데이터를 저장할 수 있습니다.

 

그럼 오늘은 자료형에 대해서 공부해 보았습니다. int와 char형의 특징과 활용 방법에 대해서 이해하셨다면 오늘은 100점 입니다!

 

감사합니다!

반응형