본문 바로가기

C언어 기초 프로그래밍

C언어(#2) 기초 프로그래밍 - 변수와 상수

1. 개요

변수(Variables)란 프로그램이 실행되는 동안에 언제든지 저장된 값이 변경될 수 있는 공간을 뜻합니다. 예를 들자면 두 점 간의 변화되는 거리를 의미하는 Distance는 변수로써 프로그램이 실행되는 도중에 변경될 수 있습니다. 

 

상수(Constants)란 한 번 정해지면 값을 변경할 필요가 없는 데이터를 의미합니다. 예를 들자면 원주율 3.141592...와 같은 값은 이미 정해져 있기 때문에 프로그램에 저장되어 변경될 필요가 없습니다. 


2. Sizeof 함수를 사용하여 메모리 크기 산출

이번에는 Sizeof 함수를 사용하여 해당 변수의 메모리 크기를 구해보겠습니다. 아래와 같이 코드를 입력합니다.

 

#include <stdio.h>

int main(void)
{
   int x;
   x = 5;
   
   printf("%d\n", x);
   printf("변수 x의 메모리 크기는 %d입니다.\n", sizeof(x));

   return 0;
}

 

정수 x를 5로 초기화해준 후, x를 출력하고, x의 메모리 크기를 출력하도록 코드를 작성했습니다. 정수를 출력할 때에는 %d를 사용하며, printf(%d, x)의 형식으로 입력하게 되면 x의 값이 출력됩니다. 역슬래시\n은 한 줄 띄어쓰기를 하라는 표시입니다. 프로그램을 실행해보면 아래와 같은 결과가 출력되는 것을 볼 수 있습니다.


3. 실수 : float과 double

이번에는 실수에 대해서 알아보도록 하겠습니다. 실수를 나타낼 수 있는 자료형에는 float과 double이 있습니다. 단지 약간의 차이가 있다면 float은 실수를 나타낼 수 있는 메모리가 4Byte인 반면에 double은 8Byte입니다. 즉, 123456789.123456789라는 수를 float과 double을 통해 따로 출력해보면 그 결과는 다르게 나타납니다. 

 

#include <stdio.h>

int main(void)
{
	int x = 50;

	float y = 123456789.123456789;
 
	double z = 123456789.123456789;
	
	printf("x = %d\n", x);
	printf("y = %.2f\n", y);	
	printf("z = %.2f\n", z);
    
	return 0;
}

 

정수 x와 실수 y, 실수 z를 각각의 값으로 초기화 한 후, 그대로 출력해봅니다. 정수를 출력할 때에는 %d를 쓰는 반면에 실수를 출력할 때에는 %f를 입력하며, %.2f는 소숫점 둘째자리까지만 출력하라는 의미입니다. 프로그램을 실행시켜서 값을 출력해보면 같은 실수를 나타내는 자료형이지만 그 값은 다른 것을 알 수 있습니다.

 

이와 같이 float은 4Byte 밖에 안 되기 때문에 전혀 무관한 값이 들어온 것을 확인할 수 있습니다. 이렇듯 실제 프로그래밍에서 float은 사용할 수 있는 범위가 굉장히 작기 때문에 실수를 표현하고자 할 때에는 double을 많이 사용한다는 것을 알 수 있습니다.


4. Overflow : 최댓값에서 최솟값으로

이번에는 Overflow라는 개념을 짚고 넘어가겠습니다. Overflow는 말 그대로 '흘러넘치다'라는 뜻을 가지고 있습니다. 즉, 어떤 값이 갖는 최댓값을 뛰어넘으면 0으로 가는 것이 아니라 정 반대로 가장 낮은 값으로 이동하는 것입니다. 마치 고무줄을 끝까지 잡아당기다가 1만큼의 힘이 부족해서 놓치는 순간 고무줄이 반대 방향으로 튕겨지는 것과 비슷합니다. 

 

#include <stdio.h>
#include <limits.h>

int main(void)
{
	int x = INT_MAX;
    
	printf("int형의 최댓값 x는 %d입니다.\n", x);
	printf("x + 1은%d입니다. \n", x + 1);
    
	return 0;
}

 

여기서 INT_MAX를 정상적으로 정의하기 위해서는 한계값들을 다루는 라이브러리인 limits.h 라는 헤더파일을 추가해주어야합니다. 정수 x는 프로그램 상 나타낼 수 있는 정수의 최댓값으로 정의하고 그 최댓값인 정수 x와 1을 더한 값을 출력해보면 아래와 같은 결과를 볼 수 있습니다.

 

 


5. 간단한 사칙연산

프로그래밍에서 사칙연산의 기호는 이와 같습니다. 더하기는 +, 빼기는 -, 곱하기는 *, 나누기는 %, 나머지 구하는 것은 &입니다. 이제 이러한 기호를 이용하여 코드를 작성해보고 프로그램을 실행하면 그 값이 정확히 계산되어 나오는 것을 볼 수 있습니다.

 

#include <stdio.h>

int main(void)
{
	int x = 10;
	int y = 20;
    
	printf("x = %d입니다.\n", x);
	printf("y = %d입니다.\n", y); 
	printf("x + y는%d입니다.\n", x + y);
	printf("x - y는%d입니다.\n", x - y);
	printf("x * y는%d입니다.\n", x * y);	
	printf("x / y는%d입니다.\n", x / y);	
	return 0;
}