정말 오랜만 입니다.
일주일만 쉬기로 했는데 시험이 끝나고 정보올림피아드를 준비하느라 한 주 더 미뤄지게 됬습니다.
오늘은 상수와 형 변환에 대해 알아볼 겁니다.
상수, 수학시간에 많이 들어보셨죠?
크게 변수와 상수의 차이점을 보면 변수는 값의 변경이 가능한 녀석(?)이고 상수는 값의 변경이 불가능한 녀석입니다.
상수역시 앞서 배운 int나 double같은 자료형에 의해 표현됩니다.
상수는 크게 이름을 지니지 않는 리터럴(Literal) 상수와 이름을 지니는 심볼릭(Symbolic) 상수로 나뉩니다.
먼저 리터럴 상수먼저 봅시다.
리터럴 상수는 이름이 없는 상수라고 했습니다. 이름이 없다는게 대체 무슨 소리일까요??
다음 코드를 봅시다.
(그림 공부좀 하고오겠습니다. 이건 뭐 벌레를 그린것도 아니고..)
위 그림을 단계벌로 정리해보겠습니다.
1. 정수 10과 정수 20이 메모리 공간에 상수형태로 저장된다.
2. 두 상수를 기반으로 덧셈연산 진행
3. 덧셈 결과인 30을 변수 num에 저장
이해가 되시나요?
메모리 공간을 잘 보시면 30이 저장된 곳은 num이라는 이름이 있는 변수에 저장이 되었는데, 10과 20은 메모리 공간에 이름이 없습니다. 이것이 위 에서 말했던 이름이 없는 상수 '리터럴 상수' 또는 그냥 '리터럴' 이라고도 합니다.
다음 코드에서 변수와 상수(리터럴)의 수가 몇 개 인지 세봅시다.
자료형은 변수만을 위해서 존재하는 것이 아니라 상수를 위해서도 존재합니다.
상수를 메모리 공간에 저장하기 위해서는 다음과 같은 사항을 고려해야합니다.
"정수의 형태로 저장하나? 실수의 형태로 저장하나?"
"몇 바이트의 크기로 저장하나?"
위 두 가지 사항을 하나로 표현할 수 있습니다.
"어떠한 자료형으로 저장하나?"
상수가 저장되기 위한 자료형은 어떻게 선택되는지 보겠습니다.
그런데 대입연산자 왼쪽에 있는 변수의 자료형에 따라 상수 자료형이 결정된다고 헷갈리시는 분이 있을 것 같습니다.
우리는 그냥 대입연산자 오른쪽에 선언된 상수의 자료형에 어울리게 변수 자료형을 선택했을 뿐이죠.
헷갈림을 해결하기 위한 코드를 보시죠.
실행결과
위 예제 처럼 sizeof 연산자로 리터럴 상수의 크기를 확인할 수 있습니다. 그 결과 문자형 상수의 크기가 int형의 크기인 4바이트로 표현된다는 것을 확인했습니다.
자 그런데 그냥 자동으로 int나 double로 표현되는데 자기가 알아서 표현하고 싶은 자료형으로 표현할 수 있을까요?
가능합니다! 접미사를 이용해서 말이죠.
아까도 말했듯이 위 접미사들은 대소문자를 구분하지 않으므로 상황에 맞게 대소문자를 선택하면 됩니다.
이번엔 이름이 있는 심볼릭 상수에 대해 알아봅시다.
심볼릭 상수를 표현하는 방법은 3가지가 있는데 하나는 const키워드를 사용, 하나는 매크로를 이용, 마지막으로 열거형을 사용하는 방법이 있습니다. 하지만 매크로와 열거형은 나~~~~~~~~~~~~~중에 배우기 때문에 이번에는 const키워드를 사용 하여 표현하는 방법만 배우겠습니다.
const키워드를 사용하여 상수를 만드는 방법은 무척 쉽습니다. 변수 선언시 const 키워드만 추가하면 되기 때문이죠.
이는 상수이기 때문에 변수를 선언과 동시에 초기화 해야합니다.
다음 코드를 봅시다.
위 코드에서 AGE와 PI는 심볼릭 상수입니다. 따라서 변경이 불가능 합니다.
다음과 같이 선언과 초기화를 분리 시킬수도 없습니다.
다음 강의는 이어서 형 변환에 대해 알아볼겁니다.
다음 강의 때 봐요~
'C언어 강의' 카테고리의 다른 글
(C언어 강의) Chapter -11 printf와 scanf함수에 대한 추가적인 이야기 (0) | 2016.07.26 |
---|---|
(C언어 강의) Chapter -10 상수와 형 변환 -02 (0) | 2016.07.25 |
(C언어 강의) Chapter -09 여러가지 자료형 (3) | 2016.07.08 |
(C언어 강의) Chapter -08 비트 연산자 (2) | 2016.07.06 |
(C언어 강의) Chapter -07 컴퓨터의 데이터 표현방식 (0) | 2016.07.04 |