본문 바로가기

전자 공학/C언어 C++

[C언어 독학하기] 5. 상수 (리터럴 상수, 심볼릭 상수)

반응형

 

 

 

안녕하세요. 취업한 공대누나입니다.

오늘은 상수에 대한 공부를 해보도록 하겠습니다.

어렵지 않으니 가볍게 읽고 따라해주세요.

 

지난 시간에 다뤘던 변수는 우리가 대입하는대로 값을 바꿀 수 있었습니다.

하지만 상수는 프로그램 실행 도중 값이 변경 되지 않습니다.

 

상수에는 크게 

리터럴 상수와 심볼릭 상수

두 가지로 나눌 수 있습니다.

 

리터럴 상수는 글자 그대로 의미가 있어서 이름이 없는 상수를 말합니다.

심볼릭 상수는 상수를 기호화하여 변수처럼 이름을 지어 쓰는 상수를 말합니다.

 

예제 소스코드와 출력 결과를 잠깐 보도록 하겠습니다.

 

 

심볼릭 상수를 보시면 위에 #define NUMBER 10이라고 되어있습니다.

자주 사용되는 혹은 의미 있는 상수를 변수처럼 이름을 지어서 사용하는 것입니다.

이러한 심볼릭 상수는 왜 사용을 하게 될까요?

 

예를 들어서 10 이라는 숫자를 계속 반복해서 코딩을 진행하였는데

100으로 수정해야 하는 일이 발생하는데 리터럴 상수로 그대로 쓰여져있으면 

프로그래머가 일일이 수정해서 작업을 진행해야 합니다.

하지만 위와 같이 #define을 통해서 변수처럼 사용하게 되면 NUMBER 값만 100으로 바꿔주면 됩니다. 

 

심볼릭 상수를 만드는 방법은 한 가지가 더 있는데요

const라는 키워드를 이용하는 것입니다.

 

 

const로 심볼릭 상수를 선언하는 방법은 위와 같습니다.

하지만 위의 예제에서 왜 오류가 났을까요?

 

심볼릭 상수는 변수가 아니기 때문에 중간에 값을 변경할 수 없기 때문입니다.

따라서 값을 위와 같이 변경하려고 하면 오류가 나게 됩니다.

 

 

이렇게 값을 변경하려고 하지 않아야 컴파일이 정상적으로 완료됩니다.

 

저는 실무에서 펌웨어를 C언어를 이용하여 코딩을 진행합니다.

그럴 경우 일반적으로

#define TRUE 1

#define FALSE 0

 

이런식으로 상수를 변수처럼 만들어서 사용하기도 많이 합니다. 

자주 사용하기도 하지만

소스 코드를 읽을 때에 다른 사람들이 쉽게 읽을 수 있기 때문입니다.

긴 소스 코드를 보다보면 해석하기 어려운 일이 굉장히 많은데요.

이런 식으로 이름을 붙여 놓으면

아 참일 때 이 구문을 실행하는구나

아 거짓일 때는 이 구문을 실행해야 하는구나를

명확하고 한 눈에 알아볼 수 있어서 편합니다.

 

혼자 하는 일이 아니라 여럿이서 하는 일이기 때문에

나만 알아볼 수 있는 것이 아닌 누구나 알아볼 수 있게 소스 코드를 짜는 것이 중요합니다.

 

#define 또는 const를 앞으로 적절하게 활용하여

멋진 개발자가 되길 바랍니다.

 

감사합니다.

반응형