개발자 면접 공부/C-C++

상수와 리터럴 (Constant & Literal)

chogyujin 2023. 5. 20. 18:54
728x90

오늘은 상수(Constant) 와 리터럴(Literal)에 대해서 알아보도록 하겠습니다.

 


1. 개요

C++ 에서는 const 라는 상수를 지정할수있는 선언문이 있습니다.

이 const 라는 키워드를 붙힌 변수는 반드시 선언 당시에 초기화를 진행시켜줘야하고 그 다음에 절대로 값이 변하지가 않습니다.

그럼 리터럴은 무엇일가요??

아래 내용을 정리하면서 설명을 해 드리겠습니다.

 


2. 상수 (Constant)

상수는 말 그대로 수식에서 변하지 않는 값을 의미합니다. 값이 변하는 변수와의 반대에 의미를 가지고있습니다.

const int a = 5; // 반드시 초기화를 진행해줘야한다.
a = 6 // 에러 Type이 const int type입니다.

예시로 const 를 넣으면 반드시 초기화를 진행시켜줘야하며 a의 값이 변경이 될수가 없습니다.

하지만 constexpr과 다른점도 있기에

이 포스팅을 보고 오시는걸 추천드립니다.

https://chogyujin-study.tistory.com/75

 

Constexpr VS Const

오늘은 Constexpr과 Const 의 차이점을 공부하도록 하겠습니다. 1. 개요 const 에 대해서는 프로그래밍 언어를 공부해본 사람들은 다 알고있는 사실인 상수 변수를 선언할때 쓰는 선언문입니다. 하지

chogyujin-study.tistory.com

또한 *도 const에 따라 다르게 변경이 될수있으므로 이 포스팅을 참고해주세요

https://chogyujin-study.tistory.com/74

 

const int* p 와 int * const p의 차이점

1. 개요 오늘은 const int* p 와 int* const p의 차이점을 공부하도록 하겠습니다. 2. 설명 const 는 상수 이므로 대상 변수를 선언한뒤 초기화를 해주면 값을 변경을 안해주는 것을 의미합니다. ex) const int

chogyujin-study.tistory.com

const는 결국 변하지 않는 값입니다.
그렇다면 리터럴이라는 뜻은 무엇일가요?


2. 리터럴 (Literal)

리터럴은 '변하지 않는 수'가 프로그래밍 언어 안에서 리터럴이라고 정의하고있습니다.

리터럴은 값 자체의 '고유성'을 갖고있습니다.

const int a = 5; //a는 상수 5는 리터럴

3. 요약

공통점으로는 : 상수, 리터럴 둘다 변하지 않습니다.

차이점은 : 

 - 상수 : 변하지 않는 변수 = 변수가 변하지 않는것뿐

 - 리터럴 : 변하지 않는 "값" 또는 "데이터"

 


4. 번외

char * 를 설정하여 문자열을 초기화 할려고 해도 에러를 뿝게 됩니다.

char* p = "asdfasd";// 에러 type이 char *p 이거나 const char[8]입니다.

 

이것을 고치기 위해서는 앞에 const를 붙이면 됩니다.

const char* p = "asdfasd";// 확인

하지만 그냥 std::string을 사용하는 방법이 훨신 안전하고 좋습니다.

std::string a = "asdfsad";