기호 상수
코드를 통해 기호 상수에 대해 조금 더 자세히 설명하도록 하겠습니다.
int a = 3; const int a = 3;
첫 번째 줄은 정수형 변수 a를 선언하고 3으로 초기화한 것입니다. 물론 a는 다른 값으로 변경할 수 있습니다. 두 번째 줄 역시 정수형 변수 a를 선언하고 3으로 초기화한 것까지는 동일하지만, const라는 키워드를 앞에 붙였습니다. 무슨 차이가 있는 것일까요?
먼저 const가 붙으면 정수형 a는 더 이상 변수라고 할 수 없습니다. a라는 이름을 가진 기호 상수가 되었기 때문입니다. 상수가 되었다는 것은 a의 값을 변경할 수 없다는 의미이므로 다음과 같이 a의 값을 변경하려고 시도하면 컴파일 에러가 발생합니다. 요약하면 const 키워드를 통해 a를 읽기 전용 변수로 만들어 상수로 사용하는 것입니다.
const int a = 3; a = 5; // 컴파일 에러 발생
만약 const int a;처럼 특정 값으로 초기화하지 않고 선언만 할 경우, 임의의 값으로 초기화가 됩니다. 임의의 값이라도 이미 초기화가 된 것이므로 상수입니다. 당연히 값을 변경하려고 하면 컴파일 에러가 발생하겠지요. 그러므로 const를 사용할 때는 선언과 동시에 초기화를 하는 것이 좋습니다.
const int a; a = 3; // 컴파일 에러 발생
const 상수는 변수를 사용하였으므로 당연히 변수의 특징을 가집니다. int, double, float와 같은 변수의 자료형 정보를 가지며, 이에 따라 표현할 수 있는 값의 범위도 정해집니다.