티스토리 뷰

안녕하세요, IT디자이너 입니다.

 

이번에는 C언어의 상수에 관련하여 포스팅하도록 하겠습니다. 

 

C언어에서 변수, 변수의 데이터타입 등 변수에 관해서 여라가지 키워드를 보셨을 겁니다. 하지만 그의 반대되는 "상수"라는 개념도 있겠죠?

 

이번에도 하나씩 파헤쳐보도록 하겠습니다. !

 

1. 리터럴(Literal) 상수

 

리터럴 상수는 이름없는 상수 입니다. 여러분이 생각지도 않게 여러번 쓰셨을 겁니다.

 

int num1 = 10;

int num2 = 10 + 30;

 

위 코드를 보시게되면은 "10"이라는 숫자를 대입하거나 "10+30"으로 연산하여 대입하는 경우가 있을 겁니다. 

 

네, 바로 대입연산자의 우측에 있는 숫자들이 "리터럴(Literal) 상수" 입니다. 우리가 변수를 초기화할 때 사용하는 숫자들은 CPU에서 어떻게 처리하는지 그림으로 설명드리도록 하겠습니다. 

 

num2 변수를 초기화하는 CPU

위 사진을 보시게되면은 먼저 입력한 10과 30을 메모리에 저장하여 그것을 CPU를 통해 연산 후 num2 변수에 대입을 하고있습니다. 

 

그러면 "리터럴(Literal) 상수"는 컴퓨터가 어떻게 어떤 데이터 타입으로 저장할까요?

 

정수와 실수의 리터럴(Literal)상수 데이터타입

 

위 사진을 보시게되면은 일반적으로 정수는 "int" 실수는 "double"형 데이터 타입에 초기화가 됩니다. 하지만,

int형으로 표현이 가능하면 int형으로 int 데이터타입보다 큰 데이터타입이 필요한 경우에는 더 큰 데이터타입으로 초기화가 진행됩니다. 

double형 또한 마찬가지로 double형 보다 큰 데이터타입이 필요한 경우에는 더 큰 데이터 타입으로 초기화가 진행됩니다. 

 

그래서 float데이터 타입으로 실수를 초기화하였을 때 컴파일은 가능하지만 경고 오류문구가 나오는 경우를 보셨을 겁니다. 

 

float num1 = 30.23;  //  <- 오류 문구 발생!!!

float num2 = 10.23f;  // < 오류 발생 없음!

그 이유는 전에 말씀드렸듯이 "리터럴(Literal)상수"는 실수일 경우  "double"형 데이터타입으로 메모리에 저장되기 때문입니다. 

 

그렇기 때문에 'f'와 같은 접미사를 이용해서 변수를 초기화 해야하는 데이터타입들이 존재합니다. !!!!

 

 

2. 심볼릭(Symbolic) 상수

 

"리터럴(Literal)상수"의 개념도 익히셨으니 이제는 "심볼릭(Symbolic)상수"에 관하여 설명드리도록 하겠습니다. 

 

초기화 시 데이터타입 앞에 "const"라는 키워드를 사용하면은 언제든지 "심볼릭(Symbolic) 상수"로 초기화할 수 있습니다. 

 

const int PI = 3.1415; // 심볼릭 상수 초기화!

PI = 12345; // <- 오류 발생!

 

위 코드를 보시게되면은 "심볼릭(Symbolic) 상수"를 선언 후 다른 숫자를 대입하는 과정에서 오류가 발생하는 부분을 볼수 있을 것입니다. 

 

즉,  초기화 이후 절대로 변경되어서는 안되는 변수를 얻고자할 때 "심볼릭(Symbolic)상수"를 사용하게됩니다.

 

원주율 같은 경우가 있겠죠?

 

심볼릭 상수는 꼭 필요할 때 사용할 경우 디버깅하는 과정을 통해서 쉽게 오류를 찾아내기도 합니다. !!!!

 


 

변수보다는 자주쓰이지는 않지만 꼭 알아둬야 할 상수 개념을 소개해드렸습니다. 

 

감사합니다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함