공부하자/C언어

C언어 문법 공부 3장 [C언어 데이터의 종류 및 변수]

YoBot 2016. 11. 19. 13:46

이번 강좌에서는 C프로그램에서의 데이터에 대해 알아보도록 하죠. 

1. C언어 데이터의 종류


C언어에서 데이터를 크게 분류하자면 수치 데이터와 문자 데이터로 분류할수 있습니다.


수치 데이터는 0, 1, 100, 200등의 정수와 1.0, 2.0등등의 소수가 있고, 문자 데이터에는 'A', 'B'등의 문자와, "ABCDEFG"등의 문자열이 있습니다.


그리고 데이터는 상수와 변수로도 구분할수 있습니다. 


2. 변수


변수란 프로그램에서 변할수 있는 값을 말합니다.

정확히 말하지면 어떤 기억장소가 주어지는데 그 안의 값을 마음데로 바꿀수 있는 기억장소를 말합니다.

변수를 사용하기 위해선 반드시 변수를 선언해야 합니다.

즉 기억장소를 마련해야 쓸수 있는 것이죠 그럼 변수를 선언하는 방법에 대해 알아볼까요? 변수 선언은..


변수의자료형태 변수명[=초기값, 변수명=초기값...]; 

이렇게 합니다.


여기서 변수의자료형태는 변수에 저장할 값이 정수인지 소수인지 문자인지 등등을 정하는 키워드를 쓰는 것 입니다.


그리고 변수명은 그 변수를 상징하는 심볼이고 초기값은 처음에 들어갈 값인데 초기값이 필요 없으면 쓰지 않아도 됩니다.


그럼 자료형 키워드에 대해 알아보죠. 


(1) 문자

문자를 나타내는 키워드가 있는데 그건 char입니다.

이건 8비트로 되어 있고 1문자를 넣을수 있습니다. 


(2) 정수

정수를 나타내는 키워드는 int입니다.

이 형태의 크기는 환경에 따라 달라집니다.

즉 16비트 프로그램의 경우 이 크기는 16비트이고 윈도우즈 95와 같은 32비트 프로그램에선 32비트 입니다.

하지만 지금은 16비트 환경인 도스에서 하므로 이 크기는 16비트가 됩니다.

그러므로 여기에는 -32768에서 32767까지 넣을수 있습니다.

그런데 크기를 16비트 또는 32비트로 정확히 정하고 싶을때가 있죠?


그럴땐 short, long키워드를 사용합니다.

short또는 long를 int앞에 써주면 되죠 

short int a=3;

long int b, c; 


이런 식으로..

여기서 short를 써주면 16비트가 되고 long를 써주면 32비트가 됩니다.

그리고 이때는 int를 생략해도 됩니다. 

short a=3;

long b, c; 

이렇게..

만약 long를 썼다면 32비트 이므로 -2147483648에서

2147483647까지 넣을수 있죠.


(3) 소수 

그리고 다음은 소수에 형태의 키워드 입니다.

소수 형태에 키워드에는 float와 double이 있습니다.

두개의 차이는 float는 32비트이고 double는 64비트라는 것 입니다.

float에는 -3.4E-38에서 3.4E+38까지를 넣을수 있고 double에는 -1.7E-308에서 1.7E+308까지를 넣을수 있죠.


여기서 E다음에 나오는 수는 지수를 말합니다.

즉 -3.4E-38은 -3.4의 -38승을 말합니다. 


(4) 숫자와 문자간의 관계


숫자와 문자간의 관계를 알아보죠.

C에서는 숫자가 곧 문자이고 문자가 곧 숫자라는 것을 알아두시기 바랍니다. 즉 숫자 65는 곧 아스키 코드 65인 문자 A이고 문자 A는 곧 숫자 65입니다. 그러니까 65는 A라는 것이죠.  그러므로  char a='A';


이것은 

char a=65; 

이것과 똑같습니다.


또한 여기서처럼 char형에도 숫자를 넣을수가 있습니다.

char형에는 -128에서 127까지 넣을수 있죠.

물론 int형에도 문자를 넣을수가 있습니다. 


(5) 부호 처리


이번엔 부호 처리를 결정하는

signed와 unsigned에 대해 알아보도록 하겠습니다.

우선 이것은 char형과 int형에 대해서만 사용할수 있다는 것을 알아두세요.

char과 int형에는 +와 -부호가 있습니다.(물론 float, double에도 있지만..)

int형의 경우 16비트 중에서 1비트가 부호를 나타내는 것이고,

나머지 15비트가 숫자 크기를 나타내죠.

이 1비트를 sign비트라고 합니다.


이런 sign비트가 있는 변수를 만드느냐 아니면 없는 변수를 만드느냐를 정하는 키워드가 signed와 unsigned입니다.

이것은 변수형 앞에 써 주면 되고 signed를 쓰면 sign비트를 만들고 unsigned를 쓰면 sign비트를 만들지 않습니다.


예를 들자면.. 

signed int a;


unsigned int b; 

이런 식으로.. 

그런데 signed는 디폴트 입니다.


즉 쓰지 않으면 signed로 하는 것이죠.


그러니까 signed int a; 이건 int a; 이거랑 똑같습니다..

만약 unsigned를 쓰면 sign비트가 없고 모든 비트를

숫자 크기를 나타내는데 씀니다. 그래서 부호를 처리하지 않습니다.

그러므로 양수만을 넣을수 있지만 더 큰 수를 넣을수 있죠.


unsigned char에는 0에서 255까지

unsigned int나 unsigned short에는 0에서 65535까지

unsigned long에는 0에서 4294967296까지 넣을수 있습니다. 


(6) 변수에 값 치환


다음으로 변수에 값을 넣는 방법을 알아야 하는데 이건 아주 간단합니다. 

변수명=값; 

이렇게만 해주면 되거든요.


예를 들자면..


a=10;


이렇게 하면 a에 10을 넣으라는 것이죠.


이것으로 변수에 대한 설명을 마치겠습니다.


그럼 지금까지 나온 변수 형태를 정리해 보죠.


키워드 변수형태 변수 범위


-----------------------------------------------------------------(signed) char 문자 -128~127


unsigned char 문자 0~255


(signed) int 정수 -32768~32767


unsigned int 부호없는 정수 0~65535


(signed) short (int) 정수 -32768~32767


unsigned short (int) 부호없는 정수 0~65535


(signed) long (int) 정수 -2147483648~2147483647


unsigned long (int) 부호없는 정수 0~4294967296


float 소수 -3.4E-38~3.4E+38


double 소수 -1.7E-308~1.7E+308


-----------------------------------------------------------------(괄호 안은 생략가능한 것) 

여기서 문자열에 관한 데이터형은 없는데 C에는 문자열 데이터형이 없습니다.

그래서 특별한 방법으로 문자열을 처리하기 때문에 조금 후에 배우기로 하죠.