Coding Memo

C++ 리터럴 표기법 및 팁 본문

Language/C++

C++ 리터럴 표기법 및 팁

minttea25 2023. 1. 7. 18:11

변수에 넣는 값을 리터럴이라고 한다.

(= 메모리에 저장되는 값)

 

int a = 1;

위 코드에서 리터럴은 1이 된다.


C++ 에서의 여러가지 타입에 대한 리터럴 표기법

 

* 1를 표시한다고 했을 때,

형식 리터럴
int 1
unsigned int 1u
long 1l
unsigned long 1ul
double 1.0
float 1.0f
long double 1.0l

 

이 외에도 2진수, 8진수, 16진수 표기법이 각각 따로 있다. (2진수는 C++11 부터)

형식 접두사 예시
2진수 0b, 0B 0b1110
8진수 0 015
16진수 0x, 0X 0XAABB00

주의: 접두사 이후에 나오는 숫자나 문자는 당연히 해당 형식에 포함된 숫자나 문자여야 한다! (아니면 오류가 날 것이다.)

 


Tip : 조금 긴 숫자를 표현할 때, 알아보기 쉽게 ` (어포스트로피)를 사용하자 (C++14)

 

우리가 일상생활에서 금액을 표기할 때 쉼표를 쓰는 것처럼 프로그래밍할 때도 비슷하게 쉼표대신 어포스트로피를 사용하여 숫자를 쉽게 읽고 파악할 수 있다.

어포스트로피(`)는 단순 정수 뿐만 아니라 2진수, 8진수, 16진수에도 사용할 수 있다.

 

(자신이 편한 위치에 넣어주면 된다!)

(키보드에서 어포스트로피는 작음 따옴표이다.)

 

형식 일반 표기 어포스트로피 삽입 후
정수 1234567890 1'234'567'890
2진수 0b1000110001 0b10'0011'0001
8진수 01234567 0123'4567
16진수 0x12345612AB34 0x1234'5612'AB34
int main()
{
    long long a = 1'234'567'890l;
    long long b = 0b10'0011'0001l;
    long long c = 0123'4567l;
    long long d = 0x1234'5612'AB34l;
    int e = 1'000'000'000;

    cout << a << endl;
    cout << b << endl;
    cout << c << endl;
    cout << d << endl;
    cout << e << endl;

    return 0;
}

 

(부동소수점에는 어포스트로피 대신 .(온점)을 이용하면 된다. (C++17) 하지만 공학적인 계산이나 이런 표기가 필요한 특정상황이 아니라면 헷갈릴 것이다...)


정리

메모리에 저장되는 값을 리터럴이라고 하며, C++ 에는 여러가지 타입을 지원한다.

특히, long이나 long double 같은 부동소수점에서는 좀 더 정확한 값 표기를 위해 리터럴를 사용하는 것을 추천한다.


참고 책: 필요한 것만 골라 배우는 모던 C++ | 프로그램 인사이트 | 패터 고칠링