Programing/C++

[C++ 프로그래밍] 리터럴(Literals)

유니얼 2024. 7. 10. 02:30
728x90

C++ 기초 프로그래밍: 리터럴(Literals)

리터럴은 C++ 프로그램에서 고정된 값을 나타내는 데 사용됩니다. 리터럴은 변수나 상수에 값을 할당할 때 주로 사용되며, 다양한 타입을 지원합니다. 이번 블로그 글에서는 C++에서 지원하는 다양한 리터럴 타입과 그 사용법에 대해 알아보겠습니다.

리터럴의 종류

  1. 정수 리터럴: 정수 값을 나타내는 리터럴로, 다양한 자료형과 결합하여 사용할 수 있습니다.
  2. 부동 소수점 리터럴: 소수점이 있는 실수 값을 나타내는 리터럴입니다.
  3. 문자 리터럴: 하나의 문자를 나타내는 리터럴로, 작은따옴표(')로 감싸서 표현합니다.
  4. 문자열 리터럴: 문자열을 나타내는 리터럴로, 큰따옴표(")로 감싸서 표현합니다.
  5. 불리언 리터럴: 참(true)과 거짓(false)을 나타내는 리터럴입니다.
  6. 포인터 리터럴: 포인터를 나타내는 리터럴로, nullptr을 사용합니다.

정수 리터럴

정수 리터럴은 10진수, 16진수, 8진수, 2진수로 표현할 수 있습니다. 각 정수 리터럴은 부호 없는(unsigned), 긴(long) 타입과 결합하여 사용할 수 있습니다.

#include <iostream>

int main()
{
    // 리터럴 타입: unsigned(부호 없는)와 long(긴)의 조합.
    unsigned char unsigned_char {53u}; // 555U는 범위를 벗어나므로 실패

    // 2바이트
    short short_var {-32768}; 
    short int short_int {455};
    signed short signed_short {122};
    signed short int signed_short_int {-456};
    unsigned short int unsigned_short_int {5678U}; // U는 unsigned를 나타냄

    // 4바이트
    const int int_var {55};
    signed signed_var {66};
    signed int signed_int {77};
    unsigned int unsigned_int {555U}; // U는 unsigned를 나타냄

    // 4 또는 8 바이트
    long long_var {88L}; // 4 또는 8 바이트
    long int long_int {33L};
    signed long signed_long {44l};
    signed long int signed_long_int {44l};
    unsigned long int unsigned_long_int {555ul}; // ul은 unsigned long을 나타냄

    // 8바이트
    long long long_long {888ll}; // 8 바이트
    long long int long_long_int {999ll};
    signed long long signed_long_long {444ll};
    signed long long int signed_long_long_int{1234ll};

    // 숫자 그룹화: C++14 이후 지원
    unsigned int prize {1'500'000u}; // 1,500,000을 나타냄
    std::cout << "The prize is : " << prize << std::endl;

    std::cout << "signed_long_long_int : " << signed_long_long_int << std::endl;

    // 축소 변환 오류
    // 축소 변환 오류는 중괄호 초기화 방식에서 잡아냄.
    // 대입과 함수형 초기화는 이를 잡아내지 못함.
    // unsigned char distance {555u}; // 오류 [0~255]
    // unsigned int game_score {-20}; // 오류

    // std::cout << "game_score : " << game_score << std::endl;

    // 숫자 시스템 - 16진수: 0x로 접두어 붙임
    unsigned int hex_number{0x22BU}; // 555를 16진수로 나타냄
    int hex_number2 {0x400}; // 1024를 16진수로 나타냄
    std::cout << std::hex << "The hex number is : " << hex_number << std::endl;
    std::cout << std::dec << "The hex number2 is : " << hex_number2 << std::endl;

    // 16진수로 색상 표현
    int black_color {0xffffff};
    std::cout << "Black color is : " << std::dec << black_color << std::endl;

    // 8진수 리터럴: 0으로 접두어 붙임
    int octal_number {0777u}; // 511을 8진수로 나타냄
    std::cout << "The octal number is : " << octal_number << std::endl;
    // 십진수로 표현하려는 경우 0으로 시작하지 않도록 주의
    int error_octal {055}; // 이는 55가 아닌 45를 나타냄
    std::cout << "The erronous octal number is : " << error_octal << std::endl;

    // 2진수 리터럴
    unsigned int binary_literal {0b11111111u}; // 255를 2진수로 나타냄
    std::cout << "The binary literal is : " << binary_literal << std::endl;

    // 다른 리터럴들. 이 예제에서는 문자열에 대해 다룰 것이며, 이후에 더 자세히 배울 것임.
    char char_literal {'c'};
    int number_literal {15};
    float fractional_literal {1.5f};
    std::string string_literal {"Hit the road"};

    std::cout << "The char literal is : " << char_literal << std::endl;
    std::cout << "The number literal is : " << number_literal << std::endl;
    std::cout << "The fractional literal is : " << fractional_literal << std::endl;
    std::cout << "The string literal is : " << string_literal << std::endl;

    return 0;
}

출력 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:

The prize is : 1500000
signed_long_long_int : 1234
The hex number is : 22b
The hex number2 is : 1024
Black color is : 16777215
The octal number is : 511
The erronous octal number is : 45
The binary literal is : 255
The char literal is : c
The number literal is : 15
The fractional literal is : 1.5
The string literal is : Hit the road

주요 리터럴 설명

정수 리터럴:

  • unsigned int prize {1'500'000u};는 1,500,000을 나타내는 정수 리터럴입니다. 숫자 그룹화(')를 사용하여 가독성을 높였습니다.
  • unsigned int hex_number{0x22BU};는 16진수 리터럴로, 555를 나타냅니다.
  • int octal_number {0777u};는 8진수 리터럴로, 511을 나타냅니다.
  • unsigned int binary_literal {0b11111111u};는 2진수 리터럴로, 255를 나타냅니다.

부동 소수점 리터럴:

  • float fractional_literal {1.5f};는 소수점이 있는 실수 값을 나타내는 리터럴입니다.

문자 리터럴:

  • char char_literal {'c'};는 하나의 문자를 나타내는 리터럴입니다.

문자열 리터럴:

  • std::string string_literal {"Hit the road"};는 문자열을 나타내는 리터럴입니다.

결론

C++에서 리터럴은 고정된 값을 나타내는 데 사용되며, 다양한 타입을 지원합니다. 리터럴을 사용하면 변수나 상수에 값을 쉽게 할당할 수 있으며, 가독성과 유지 보수성을 높일 수 있습니다.

반응형