본문 바로가기
IT/C언어

[비와이][C언어] 03 - 변수와 상수

by BeeWhy 2021. 6. 24.

 이번에는 변수와 상수에 대해서 알아봅시다.

 변수는 variable, 값이 변할 수 있는 수 입니다.

 상수는 constant, 값이 변하지 않는 값입니다.

 

 그러면 변수를 선언하는 부분부터 상수를 적용하는 부분까지 진행해보시죠.

 

 먼저 아래와 같이 프로젝트를 생성해주세요.

 

#include <stdio.h>

int main(void)
{
	int A = 10;
	const int B = 20;

	printf("A = %d\n", A);
	printf("B = %d\n", B);

	printf("===== 값을 변경합니다. ====\n");
	A = 30;
	B = 40;

	printf("A = %d\n", A);
	printf("B = %d\n", B);

	return 0;
}

위 코드를 컴파일을 진행하면 컴파일 오류가 납니다. 

 

13번째 줄에서 오류가 난걸로 나옵니다. 즉 " B = 40;" 구간에서 오류가 발생한 것입니다. 오류는 왜 발생하였을까요?

바로 B는 const를 int 앞에 붙여서 선언하였습니다.

그러면 B는 상수라는 뜻이 됩니다. 즉, 내용을 변경할 수 없는 수 라는 뜻입니다.

 

상수에는 이처럼 변수 선언 시에 앞에 const를 붙여줌으로써, 간단하게 적용할 수 있습니다.

그러면 const를 붙여서 사용하는 경우는 언제일까요?

 

const 사용

대게 어떠한 기능을 구현할 때 입력값으로 받는 값을 const로 하게 됩니다. 입력으로 받은 값은 변형을 주지 않도록 처리를 하여, 결과값을 반환해주는 것이지요. 개발자가 주의를 기울인다면 const로 선언을 하지 않아도 상관은 없습니다만, 인간인 이상 실수할 수 있고, 자신의 코드, 구현한 기능들을 다른 사람이 활용할 수도 있기 때문에 가급적 안전한 코드를 만드는데에는 사용해주는 것이 좋습니다.

 

변수 선언의 규칙

변수와 상수를 선언을 할 때에는 규칙이 있습니다.

1. 특정 키워드로 사용하지 않는다.  

for, while, return 등과 같이 어떤 기능을 하는 키워드 또는 자료형을 나타내는 타입 등은 사용하면 안됩니다.

예를 들면,

int char = 0;

은 안된다는 뜻입니다.

 

2. 공백은 사용이 불가하다.

int a b = 0; 과 같은 사용은 불가합니다.

 

3. 첫글자에는 숫자 사용이 불가하다.

int 1abc = 0; 과 같은 사용이 불가합니다.

 

4. 대소문자를 구분한다.

int Abc 와 int abc는 서로 다른 변수명으로 인식합니다.

 

5. 특수문자 사용은 대체로 불가하다.

'_' 와 같은 경우는 가능합니다.

int a_b = 0; 은 가능하다는 뜻입니다.

$의 경우에는 컴파일러마다 차이가 있다고 합니다.

그 외의 경우에는 사용이 불가합니다.

그러므로 가급적 특수문자는 자제하되 사용한다면 _ 정도만 사용하시면 됩니다.ㅎㅎㅎ

 

 

상수 선언의 종류와 방법

1. const 이용

변수 선언시에 const를 앞에 붙여준다.

 

2. #define 을 이용

#define ABC 100

이라고 등록을 하시면 ABC는 100으로 인식하게 됩니다.

코드 예시를 보시면 아래와 같습니다.

 

#include <stdio.h>
#define B 100

int main(void)
{
	int A = 10;


	printf("A = %d\n", A);
	printf("B = %d\n", B);


	return 0;
}

위 예시는 B를 상수로 define을 해두었습니다. 값은 100이구요. 그래서 printf에서 B를 입력하니 결과가 100으로 출력되었음을 확인하실 수 있습니다.

 

3. enum  열거형 사용

#include <stdio.h>
enum {
	A = 1,
	B,
	C,
	D,
	E,
	F
};

int main(void)
{
	
	printf("A = %d\n", A);
	printf("B = %d\n", B);


	return 0;
}

A = 1로 정의되어 있고, 그 뒤에 따라오는 B, C, D는 값을 1씩 증가시키면서 반영하게 됩니다.

보통 특정 값에 대해서 정의를 내려둘때 enum과 define을 많이 사용하게 됩니다.

enum과 define을 적용해서 코드에 반영하면, 코드의 가독성이 높아지고, 값을 수정하는데 있어서도 편리하며, 코딩에서 가장 치명적인 휴먼에러를 최소화 하는데 도움될 수 있습니다.

댓글