변수의 자료형(data type)

data

변수란 무엇인가 ? 그것은 데이터를 저장하는 메모리 공간이다. 따라서, 변수는 저장되는 데이터의 종류에 따라 다양한 형태가 존재한다. 이를 변수의 자료형 또는 데이터 타입 , 데이터 타입 등으로 부른다. 이것은 크게 정수형 , 실수형으로 나누어진다.

정수 자료형

정수 자료형의 종류는 아래 표를 보자.

자료형크기(byte)데이터 저장 범위 변환 문자
char1-128 ~ 127%c
short2-32768 ~ 32767%d
int4-2147483648 ~ 2147483647%d
long4-2147483648 ~ 2147483647%ld
long long8-2^63 ~ ( 2^63)-1%lld
정수 자료형의 종류

위 표에서 보듯이 동일한 정수 자료형이라도 저장 공간의 크기에 따라 여러가지 자료형이 있다. 다음과 같은 공식으로 자료형의 저장 범위를 계산할 수 있다. -2 ^비트수 -1 ~ (2^비트수-1)-1
예컨대 , char 자료형은 크기가 1 byte 이므로 8 비트이다. 따라서 , -2^7 ~ (2^7) -1을 계산하면 -128 ~ 127이 된다.

char는 보통 문자를 저장할 목적으로 사용한다. 즉 C언어에서 문자를 저장하는 가장 좋은 수단은 char 형 변수를 사용하는 것이다.
컴파일러는 프로그램에 있는 문자를 0~127 사이의 정수로 바꾸어 처리한다. 각 문자가 갖는 고유의 정수를 아스키 코드라고 한다. 예컨대 , 영문 대문자 A 의 아스키 코드 값은 65이다. 아래 코드를 보자

5행은 ch1에 문자 A를 저장하고 있다. 그런데 문자 A의 아스키 코드값이 65 이므로 ch1에는 정수 65를 저장한 것과 동일하다. 이 값을 문자로 출력할 것인가 아스키 코드 값인 정수로 출력할 것인가는 변환 문자가 결정한다. 즉 8행 , 9행처럼 %c를 선택하면 문자를 출력하고 %d 를 선택하면 아스키 코드값을 출력한다

보통 정수 자료형으로는 int를 사용한다. int는 연산의 기본 단위이기 때문에 빠르게 연산 되기 때문이다. short형은 크기가 int형 보다 작으므로 메모리를 작게 사용하지만 연산 과정에서 int로 변환이 되어야 하기 때문에 실행 속도가 저하된다.

정수형은 일반적으로 양수와 음수를 모두 저장한다. 따라서 양수만을 저장한다면 2 배 넓은 범위의 데이터를 저장할 수 있다. 음수가 필요 없는 데이터 (예컨대 , 나이 , 체중 과 같은 자료)는 unsigned 정수 자료형을 사용 할 수 있다. 이 것의 선언 형식은 다음과 같다.
unsigned int value ;
보통의 변수 선언 형식처럼 하되 앞에 unsigned 를 붙여준다. 그리고 출력 변환 문자로는 아래 처럼%u 를 사용한다.
printf (” %u\n ” , value ) ;

실수 자료형

자료형크기 data저장 범위유효 숫자변환 문자
float4-3.4 x 10^38 ~ 3.4 x 10^387%f
double8-1.79 x 10^308 ~1.79x 10^30815%lf
long double8 이상double형과 같거나 큼15이상%Lf
실수 자료형 종류

정수형을 기본으로 사용하되 실수형은 반드시 필요한 경우에 사용하는 것이 좋다.
일반적으로 실수형은 유효숫자가 많은 double형을 기본으로 사용한다.