본문 바로가기
프로그래밍/C

2. C언어 (변수)

by Choraengyi 2017. 1. 10.
728x90

 C 언어 변수에 대해 알아보겠습니다. 우선 변수의 형에 대해 알아보겠습니다.


형식 

이름

크기 

문자형

char 

1byte 

정수형

short 

2byte 

int 

4byte 

long 

4byte 

실수형 

float 

4byte 

double 

8byte 


 각 범위는 쉽게 생각해 바이트크기로 생각하시면 됩니다. 1바이트에 8비트이기 때문에 이진수로 표현가능한 만큼 범위로 생각하면 쉽습니다.


변수는 쉽게 말해 값을 넣어두는 곳이라고 생각하면 됩니다. 예를 들어 a,b,c 라는 변수가 있을때 원하는 값을 각 변수에 넣어 여러가지 연산을 할 수 있습니다. a에 1 b에 2를 넣어 c에 a+b인 3을 넣을 수도 있고 a*b인 2를 넣을 수 있는등 다양하게 활용하기 위하여 사용하는 것이 변수 입니다.


이러한 변수는 C언어에서 선언을 먼저 해주어야 합니다. 위의 그림에서 보듯이 형식에 맞는 이름을 사용하여 선언합니다. 예를 들어 문자형 변수 a 와 정수형 변수 b, 실수형 변수 c 를 선언하면


char a;

int b;

float c;


이런식으로 선언을 하면 됩니다. 그 이후에 값을 넣어주면 되는데 간단하게 그냥 변수에 대입한다 생각하면 됩니다.


a='A';

b=100;

c=1.23;


물론 한 줄로도 선언 및 할당이 가능합니다.


char a='A';

int b=100;

float c=1.23;


변수를 이용한 프로그램을 하나 만들어 보겠습니다. 환경은 Dev-C++ 입니다.



각 변수를 선언 후에 printf 함수로 출력하였는데 못보던 %c, %d 이런게 보입니다. 각 형식에 맞게 뒤에 변수를 써주면 순서대로 읽어서 해당 형식에 맞게 출력해주는 것입니다. 만약 %d(정수) 인데 a(문자) 를 넣어주게 되면 'A'의 유니코드 번호인 65가 출력되게 됩니다. 이처럼 형식을 다르게 해서 출력도 가능하게 됩니다. 물론 그다른 형식의 값이 존재해야 합니다.


출력 형식을 간단히 정리 하겠습니다.

형식 

의 미 

%c 

문자 출력 

%d, %i 

10진수 정수 

%o

8진수 정수 

%x 

16진수 정수(소문자) 

%X 

16진수 정수(대문자) 

%u 

unsigned 정수 

%f 

소수 실수 출력 

%e 

지수 실수 출력 

%g 

소수, 지수 중 알맞은 실수 출력 


 간단히 출력형식과 변수에 대해 알아봤으니 사용자로부터 값을 입력받아 계산결과를 출력하는 프로그램까지 해보겠습니다.



 변수 선언후에 출력문 다음 scanf 라는 함수가 등장하였습니다. scanf 함수는 사용자가 키보드로 입력한 값을 읽어오는 기능을 합니다. 쓰는 방법은 형식에 맞는 문자열을 써주고, 뒤에 '&변수이름' 을 써주면 됩니다. 


scanf로 입력받은 값을 이용하여 연산결과를 출력하였습니다. 위에 예제 처럼 연산결과를 바로 출력문 내에서 문자열에 넣어서 사용할 수 있습니다. 


프로그래밍시에 적절한 변수의 사용이 중요하기 때문에 너무 넘치지도 너무 부족하지도 않게 생각하면서 코딩하는 것이 중요합니다. 예를 들면 4의 값을 넣을 것인데 굳이 double 변수를 선언하여 8바이트를 잡을 필요가 없습니다. 한 두개의 변수에서는 별 차이가 없겠지만, 이러한 변수가 수천개가 넘어가게 되면 낭비되는 크기가 엄청 많아 지게 됩니다.


** 추가 : 변수는 선언만 하고 값을 할당하지 않으면 쓰레기 값을 가지게 됩니다. 변수는 선언시에 메모리에 할당되는데 해당 공간에 어떤 값이 들어있는지를 모릅니다.(초기화를 안하면) 이러한 쓰레기 값을 가지는 것을 방지하기 위해 (값을 모르는 변수 사용) 변수 값을 초기화해 주어야 합니다. 


C언어 변수에 대해 간단히 알아보았습니다.

728x90
반응형

'프로그래밍 > C' 카테고리의 다른 글

6. C언어 (사용자 정의 함수)  (0) 2017.01.19
5. C언어 (데이터)  (0) 2017.01.14
4. C언어 (문자/문자열 입출력)  (0) 2017.01.13
3. C언어 (상수)  (0) 2017.01.11
1. C언어 (hello world)  (0) 2017.01.05

댓글