본문 바로가기
C++/C++14

C++14 : 숫자 구분자(Digit separators)

by 개발자J의일상 2022. 4. 15.
반응형

C++14에서 작은따옴표 문자(')는 정수 리터럴과 부동 소수점 리터럴 모두 숫자 리터럴에서 숫자 구분 기호로 임의로 사용할 수 있다. 

이것은 코드를 보는 사람들이 큰 숫자를 더 쉽게 알아차릴 수 있다.

auto integer_literal = 1'000'000;
auto floating_point_literal = 0.000'015'3;
auto binary_literal = 0b0100'1100'0110;
auto a_dozen_crores = 12'00'00'000;

 

때때로 숫자의 크기가 커지면 숫자를 읽기 어려워진다. 예를 들어 1000은 금방 눈에 들어오지만 더 많은 0이 추가되면 (예: 10000000) 이제 읽기가 조금 어려워지고 더 많은 0이 추가되면 어떻게 될까?

실생활에서는 쉼표(,)가 숫자에 추가된다. (예: 10,000,000) 이제 조금 읽기가 쉬워졌다. 

 

C++에서 이러한 구분 기호(쉼표)를 허용하지 않으므로 큰 숫자를 처리하는 방법에 대한 궁금증이 생긴다. 이를 처리하기 위해 C++14는 기능을 도입하였는데 그 이름은 Digit Separator이며 간단한 따옴표(')로 표시된다.

 

아래 예제는 값을 결정할 때 작은따옴표가 무시된다는 것을 보여준다.

// C++ program to demonstrate
// the above approach
#include <iostream>
using namespace std;
 
// Driver code
int main()
{
    long long int a = 10'00'000;
    // Print the value
    cout << a;
    return 0;
}
//Output : 1000000

다음은 작은따옴표가 사용자 전용임을 보여주는 프로그램이다.

어떤 위치에서 사용하든 컴파일러에 영향을 미치지 않는다.

// C++ program to demonstrate
// the above approach
#include <iostream>
using namespace std;
 
// Driver Code
int main()
{
    long long int a = 1'23'456;
    long long int b = 12'34'56;
    long long int c = 123'456;
  
    // Print all the value
    cout << "a:" << a << endl;
    cout << "b:" << b << endl;
    cout << "c:" << c << endl;
 
    return 0;
}
//Output : a:123456
//         b:123456
//         c:123456

 

 

https://en.wikipedia.org/wiki/C%2B%2B14#cite_note-9
https://www.geeksforgeeks.org/digit-separator-in-c14/
300x250

댓글