Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 short 리터럴을 작성하는 방법은 무엇일까요?

이번 글에서는 C++에서 short 타입의 리터럴(literal)을 어떻게 다루는지 알아보겠습니다. C와 C++에서는 데이터 타입마다 서로 다른 리터럴 접미사(suffix)를 사용하며, 대표적인 종류는 아래와 같습니다.

번호데이터 타입 및 리터럴 예시
1int
5
2unsigned int
5U
3long
5L
4long long
5LL
5float
5.0f
6double
5.0
7char
'\5'

표에서 볼 수 있듯이 int, long, float, double 등에는 각각 고유한 리터럴이 존재하지만, short 타입을 위한 전용 리터럴은 없습니다. 즉, short 타입 데이터에는 접미사를 붙인 리터럴을 직접 사용할 수 없습니다.

하지만 이 문제는 명시적 형 변환(explicit typecasting)을 통해 해결할 수 있습니다. 아래와 같이 코드를 작성하면 값이 short 타입으로 변환됩니다.

int x;
x = (short) 5; // short 타입 데이터로 변환됩니다.

예제 코드

#include <iostream>
using namespace std;
main() {
    int x;
    x = 65700;
    cout << "x is (as integer):" << x << endl;
    x = (short)65700; // 2바이트 범위를 넘는 상위 비트는 버려집니다.
    cout << "x is (as short):" << x << endl;
}

실행 결과

x is (as integer):65700
x is (as short):164

위 예제에서 정수형 변수에 저장된 65700은 그대로 출력되지만, short로 강제 형 변환하면 164가 됩니다. 그 이유는 short가 일반적으로 2바이트(16비트) 크기를 가지기 때문입니다. 2바이트로 표현할 수 있는 최대값은 65536이므로, 65700을 65536으로 나눈 나머지인 164(65700 − 65536 = 164)만 남게 됩니다. 이처럼 형 변환 시 값이 잘릴(truncation) 수 있다는 점을 항상 유의해야 합니다.