devseop08 님의 블로그

[Basic] 상수와 리터럴 본문

Language/C++

[Basic] 상수와 리터럴

devseop08 2025. 7. 7. 16:30
  • C++에는 두 가지 종류의 상수가 있다. 리터럴과 심볼릭이 그것이다.

리터럴 상수

  • 기본 자료형의 값을 직접 표현한 것을 리터럴이라고 한다. 리터럴은 그 값을 프로그램에서 바꿀 수 없으므로 상수에 해당한다.
  • 리터럴은 코드에 직접 삽입한 값이다. 이 값은 변경할 수 없으므로 '상수'다.

정수형 리터럴의 표현

실수형 리터럴의 표현

숫자 리터럴 접미사

매직 넘버

int value = variable * 30
  • 위 코드에서 30과 같은 숫자를 매직 넘버라고 한다.
  • 매직 넘버란 컨텍스트가 없는 코드 중간에서 하드 코딩된 리터럴(일반적으로 숫자)을 말한다.
  • 매직 넘버를 사용하는 것은 나쁜 습관: 매직 넘버가 무엇에 사용되는지에 대한 컨텍스트가 없고 나중에 값을 바꿔야 할 경우 문제 발생

심볼릭 상수

  • 매직 넘버를 사용하는 대신 심볼릭 상수를 사용하도록 한다.
  • 심볼릭 상수란 상수 리터럴 값이 지정된 이름이다.

#define 지시어로 매크로 선언

  • 심볼릭 상수를 선언할 수 있는 방법 중 하나로 #define 전처리 지시문을 이용한 매크로 선언이 있다.
#define VARIABLE 30

int value = VARIABLE;
  • #define을 이용해서 심볼릭 상수를 만들어 사용하는 것은 두 가지 문제가 있다.
      1. 매크로를 사용한 심볼릭 상수는 디버거에 표시되지 않는다.
      1. #define된 값은 항상 파일 스코프에 있으므로 나중에 #define된 값과 충돌할 수 있다.
  • 심볼릭 상수를 생성하는 가장 좋은 방법은 런타임 상수(const 변수)나 컴파일 타임 상수(constexpr 변수)를 이용하는 것이다.

'Language > C++' 카테고리의 다른 글

[Basic] 구조체와 열거형  (1) 2025.07.15
[OOP] 상속과 다형성  (0) 2025.07.15
[OOP] 생성자와 소멸자  (1) 2025.06.08
[Basic] 타입과 변수  (0) 2025.06.07
[OOP] 클래스 선언과 객체 정의  (0) 2025.06.06