C++ 리터럴 표기 (0x
, 0b
, 1.0f
, 'a'
, true
)
1. 개요
1.1 문서 개요
이 문서는 C++에서 사용되는 리터럴 표기 방식에 관해 기록하는 문서입니다. 리터럴(literal)은 코드 내에서 고정된 값을 나타내는 표현으로, 변수에 대입되거나 연산에 사용됩니다. C++ 언어는 다양한 타입의 리터럴을 지원하며, 이 문서는 주요 리터럴의 종류와 표기법에 대해 정리합니다.
2. 내용
2.1 정수 리터럴 (Integer Literals)
정수 리터럴은 정수형 값을 나타내며, 진법에 따라 다음과 같이 구분됩니다.
2.1.1 10진수, 8진수, 16진수, 2진수
- 10진수: 기본 형식. 예:
42
,1000
- 8진수:
0
으로 시작. 예:0755
(10진수 493) - 16진수:
0x
또는0X
접두사 사용. 예:0xFF
,0x1A3F
- 2진수: C++14부터 지원,
0b
또는0B
접두사 사용. 예:0b1010
(10진수 10)
2.1.1.1 예제
int a = 42; // 10진수
int b = 0755; // 8진수
int c = 0xFF; // 16진수
int d = 0b1010; // 2진수
2.1.2 부호 및 크기 접미사
정수 리터럴은 접미사를 통해 타입을 명시할 수 있습니다.
u
또는U
: unsignedl
또는L
: longll
또는LL
: long long
2.1.2.1 예제
unsigned int x = 100u;
long y = 100L;
unsigned long long z = 100ULL;
2.2 부동소수점 리터럴 (Floating-Point Literals)
부동소수점 리터럴은 실수를 표현하며, 소수점 또는 지수 표기법을 사용합니다.
2.2.1 기본 표기법
- 기본적으로
double
타입으로 간주됩니다. f
또는F
: floatl
또는L
: long double
2.2.1.1 예제
double a = 3.14;
float b = 3.14f;
long double c = 3.14L;
double d = 1.5e2; // 150.0
2.3 문자 리터럴 (Character Literals)
문자 리터럴은 '
로 감싸진 단일 문자를 나타냅니다.
2.3.1 문자 리터럴 예제
char a = 'a';
char b = '\n'; // 이스케이프 문자
2.3.2 유니코드 문자
C++11부터 유니코드 문자 리터럴 지원
u'문자'
: UTF-16U'문자'
: UTF-32L'문자'
: 와이드 문자
char16_t c = u'한';
char32_t d = U'漢';
wchar_t e = L'字';
2.4 문자열 리터럴 (String Literals)
문자열 리터럴은 "
로 감싸진 텍스트로 구성됩니다.
2.4.1 기본 및 유니코드 문자열
"Hello"
: 기본const char*
u"Hello"
: UTF-16U"Hello"
: UTF-32L"Hello"
: 와이드 문자열
const char* a = "Hello";
const char16_t* b = u"Hello";
const char32_t* c = U"Hello";
const wchar_t* d = L"Hello";
2.4.2 Raw 문자열 (C++11)
R"(내용)"
형식으로, 이스케이프 없이 문자열 그대로 표현
const char* path = R"(C:\Users\Name)";
2.5 불리언 리터럴 (Boolean Literals)
true
와 false
두 가지 값만 가질 수 있으며, bool
타입으로 사용됩니다.
bool a = true;
bool b = false;
2.6 널 포인터 리터럴 (nullptr)
C++11부터 nullptr
키워드가 도입되어, 포인터가 아무 객체도 가리키지 않음을 명확하게 표현합니다.
int* ptr = nullptr;
3. 마무리
이 문서는 C++에서 사용되는 다양한 리터럴 표기법을 진법, 데이터 유형, 문자와 문자열, 불리언, 널 포인터 등으로 구분하여 정리하였습니다. 각각의 리터럴은 코드의 가독성과 명확성을 높이는 데 중요한 요소이며, 리터럴의 종류에 따라 해당 타입과 동작이 달라지므로 적절한 표기 사용이 요구됩니다.