<개인공부>/[C#]

[C#] 리터럴(Literal)이란?

BlockDMask 2019. 7. 5. 23:03
반응형

안녕하세요. BlockDMask 입니다.

C# 을 공부하다보면, 리터럴(Literal) 이라는 말이 많이 나오는데요. 그때마다 리터럴이 뭐지? 하면서 그냥 넘어가곤 했습니다.

이번시간에는 리터럴이 무엇인지 간단하게 알아보도록 하겠습니다.


리터럴(literal)이란?



위키에서 검색을 해보면 보면 아래와 같이 나옵니다.

컴퓨터 과학 분야에서 리터럴(literal)이란 소스 코드의 고정된 값을 대표하는 용어다. 거의 모든 프로그래밍 언어는 정수, 부동 소수점 숫자, 문자열, 불린 자료형과 같은 용어를 가지고 있다. 어떤 언어는 열거 타입이나, 배열, 자료형, 객체와 같은 용어도 있다. 리터럴과 대조적으로, 고정된 값을 가질 수 있는 변수나 변경되지 않는 상수가 있다. 다음의 예제와 같이, 리터럴은 변수 초기화에 종종 사용된다.


"리터럴이란 소스코드의 고정된 값을 대표하는 용어"이라 합니다.

"고정된 값 = 변하지 않는" 값 을 말하며, 제가 이해한 바를 말씀드리자면 "노골적인, 직관적인 값"들을 말합니다.

좀더 쉽게 말하면 "리터럴이란 소스코드에 하드코딩된 값"들을 말합니다.


코드를 직접 보면서 말씀 드리겠습니다.

1
2
3
4
5
6
7
bool b      = true;         //리터럴 : true
int num1    = 100;          //리터럴 : 100
int num2    = 0x11;         //리터럴 : 0x11
int num3    = null;         //리터럴 : null
float num4  = 1.2f          //리터럴 : 1.2f
double num5 = 0.11111;      //리터럴 : 0.11111
string str  = "BlockDMask"//리터럴 : "BlockDMask"
cs


코드를 보면 = 의 오른쪽처럼 우리가 직접 값들을 적어주는 값들이 존재합니다.

프로그램이 시작하고 끝날때 까지, = 의 오른쪽에 존재하는 저 값들은 변경되지 않습니다.
(물론 변수에 대입, 복사된 변수의 값은 변경되지만 그렇다고 저기 하드코딩한 값이 변경되는건 아니니까요.)

(대입한 변수의 값까지 변하지 않는 것을 '상수'라고합니다. 리터럴과는 조금 다른 개념이죠)

이런식으로 값이 딱 정해져있는, 노골적이고 직관적인 하드코딩된 값들을 보고 리터럴(literal)이라고 합니다.


네 null도 리터럴 입니다.

네 true, false도 리터럴 입니다.


이러한 리터럴들의 타입을 구분하기 위해서 C#에서는 아래와 같은 특별한 표기 방식을 이용 합니다. 


10진수 표기     : 그냥 숫자 123

16진수 표기     : 0x12

8진수 표기       : 012

int, long          : 그냥 숫자 111

unsigned int    : 1111u

unsigned long   : 1111ul

double            : 그냥 소수 2.11

float               : 111.1f

decimal          : 111.1m


C# 데이터 타입에서 언급되는 리터럴 조금 이해가 되시나요? 도움이 되었으면 좋겠습니다.

다시한번 말하지만 "리터럴은 소스코드에 고정된 값을 말하는 대표적인 용어" 입니다.

감사합니다.

반응형