본문 바로가기

프로그래밍/C

[C] 상수와 리터럴

상수(a constant)

 상수는 말 그대로 '변하지 않는 값'을 의미한다.

 변수는 선언 후 그 값을 계속 바꿀 수 있지만,

 상수는 처음 선언할 때만 값을 초기화 할 수 있고, 이후엔 초기화할 수 없다.

리터럴(literal)과 표기 방법

 리터럴을 직역하면 '문자 그대로'라는 뜻인데, '그 값 자체'를 의미한다.

    printf("%d\n", 10);                 // 10 - 정수 리터럴
    printf("%f\n", 0.1f);               // 0.100000 - 실수 리터럴
    printf("%c\n", 'a');                // a - 문자 리터럴
    printf("%s\n", "Hello, world!");    // Hello, world! - 문자열 리터럴

 위 코드와 같이 값을 변수에 저장하지 않고 바로 출력하는 것.

 소스 코드 상에서 출력값을 그대로 입력한 것'리터럴'이다.

 이때 표기 방법이 굉장히 중요한데 숫자는 그대로 사용해도 되지만

 문자는 작은 따옴표, 문자열은 큰 따옴표로 묶어주어야 한다.

 묶어주지 않으면 변수 혹은 함수 등으로 인식될 수 있기 때문에 매우 주의해야 한다.

상수와 리터럴 그리고선언 방법

  그렇다면 '리터럴'이라고 하는 것은 무엇인가?

//↓키워드  ↓ 상수
const int con = 10;
//              ↑ 리터럴

  위와 같은 코드가 있을 때 'con'은 상수, '10'은 리터럴이라고 할 수 있다.

  즉, 상수는 변수처럼 리터럴이 저장된 공간이다.

const int con1 = 1;
int const con2 = 2;

 선언 방식은 일반 변수 선언 방식에서 위와 같이 키워드 'const'를 자료형 앞, 혹은 뒤에 표기하여 주면 된다.

 단, 상수는 반드시 선언과 동시에 값을 초기화 해주어야 한다.

 그렇지 않은 경우에는 컴파일 에러가 발생한다.

상수(const)의 사용 이유

  프로그램을 작성할 때 고정되어야 할 값을 변수에 저장해서 사용하다보면, 여러가지 사유로 값을 의도치 않게 바꿀 가능성이 있다.

 따라서 상수는 값이 변하는 것을 방지하기 위해 사용하며 코드의 의도를 명확하게 만들 수 있는 것이 상수의 사용 이유이다.


참고 및 출처

  • 코딩 도장