C++

C++ 상수(Constants) 총정리

수달정보보호 2024. 2. 16. 21:17

1. 상수(Constants)의 개념

C++에 있는 상수들은 읽기 전용 변수들인데, 그들의 값들은 일단 C++ 프로그램에서 선언되면 수정될 수 없다. 상수의 종류는 정수 상수, 부동 포인터 상수, 문자열 상수 또는 문자 상수가 될 수 있다. C++ 에서 const 키워드는 상수를 정의하는 데 사용된다.

2. 상수 선언의 구문

const data_type var_name = value;

 

 

예시:

// C program to illustrate constant variable definition
#include <stdio.h>

int main()
{

     // defining integer constant using const keyword
     const int int_const = 25;

     // defining character constant using const keyword
     const char char_const = 'A';

     // defining float constant using const keyword
     const float float_const = 15.66;

     printf("Printing value of Integer Constant: %d\n",
               int_const);
     printf("Printing value of Character Constant: %c\n",
               char_const);
     printf("Printing value of Float Constant: %f",
               float_const);

     return 0;
}

 

출력:

Printing value of Integer Constant: 25
Printing value of Character Constant: A
Printing value of Float Constant: 15.660000

 

여기서 주의해야 할 점은 선언에서 상수 변수를 초기화해야 한다는 것이다. 그렇지 않으면, 변수에 가비지 값이 저장되어 변경할 수 없게 된다. 아래의 그림에서 잘못된 변수 정의와 올바른 변수 정의의 예를 보여 준다.

 

3. 상수의 종류

상수의 유형은 변수의 데이터 유형과 동일하다. 상수의 유형 목록은 다음과 같다.

 

① Integer Constant
② Character Constant
③ Floating Point Constant
④ Double Precision Floating Point Constant
⑤ Array Constant
⑥ Structure Constant

 

그저 여기서 변수 선언을 시작할 때 const 키워드를 추가하기만 하면 되는 것이다.

 

4. 상수의 성질

const 키워드를 사용하여 정의된 C++의 상수 변수의 중요한 속성은 다음과 같다.

① 선언을 통한 초기화
상수 변수는 선언 시점에 C++에서만 초기화할 수 있다. 그렇지 않으면 쓰레기 값이 저장된다.

② 불변성
C++의 상수 변수는 정의 후 불변이며, 그말인 즉슨, 전체 프로그램에서 한 번만 초기화할 수 있다는 것이다. 그 이후에는 해당 변수 내부에 저장된 값을 수정할 수 없다.

 

5. 상수와 리터럴(Literals)의 차이

상수와 리터럴은 같은 것으로 혼동되는 경우가 많다. 그러나 C++에서는 둘은 분명 다른 개체이며, 서로 다른 의미를 가지고 있다.

 

상수 리터럴
상수는 한 번 선언하면 수정할 수 없는 변수다. 리터럴은 스스로를 정의하는 고정된 값이다.
상수는 C++에서 const 키워드를 사용하여 정의된다. 상수는 리터럴 값을 자체적으로 저장한다. 변수 또는 상수에 할당되는 값은 그 자체이다.
사용자는 상수의 주소를 결정할 수 있다. 문자열 리터럴을 제외한 리터럴의 주소는 확인할 수 없다.

 

※ #define 전처리기를 사용한 상수 정의
우리는 #define 전처리기를 사용하여 상수를 C++에서 정의할 수도 있다. #define을 사용하여 정의된 상수는 엄밀히는 상수처럼 행동하는 매크로다. 이 상수들은 컴파일러가 처리하지 않고 전처리기가 처리하여 컴파일 전의 값으로 대체된다.

 

 

728x90