다음을 통해 공유


정수 계열 확장

정수 계열 형식의 개체를 더 포괄적인 다른 정수 계열 형식(광범위한 값 집합을 나타낼 수 있는 형식)으로 변환할 수 있습니다. 이렇게 변환 형식을 확대하는 것을 "정수 계열 확장"이라고 합니다. 정수 계열 확장을 사용하면 다른 형수 계열 형식을 사용할 때마다 식에 다음을 사용할 수 있습니다.

  • char 및 short int 형식의 개체, 리터럴 및 상수

  • 열거형 형식

  • int 비트 필드

  • 열거자

C++ 확장은 "값을 보존"합니다. 즉, 확장 후의 값이 확장 전의 값과 똑같습니다. 값을 보존하는 확장에서 int가 원래 형식의 전체 범위를 나타낼 수 있을 경우 짧은 정수 계열 형식의 개체(예: 비트 필드 또는 char 형식의 개체)가 int 형식으로 확장됩니다. int가 값의 전체 범위를 나타낼 수 없으면 개체가 unsigned int 형식으로 확장됩니다. 이 전략은 ANSI C에 사용되는 전략과 같지만 값을 보존하는 변환은 개체의 "부호 유무"를 보존하지 않습니다.

값을 보존하는 확장과 부호 유부를 보존하는 확장은 보통 동일한 결과를 생성합니다. 하지만 확장된 개체가 다음 중 하나일 경우 다른 결과가 생성될 수 있습니다.

  • /, %, /=, %=, <, <=, > 또는 **>=**의 피연산자

    이 연산자는 부호를 사용하여 결과를 확인합니다. 따라서 피연산자에 적용될 경우 값을 보존하는 확장과 부호를 보존하는 확장이 다른 결과를 생성합니다.

  • >> 또는 **>>=**의 왼쪽 피연산자

    이 연산자는 시프트 연산을 수행할 때 부호 있는 수량과 부호 없는 수량을 다르게 처리합니다. 부호 있는 수량의 경우 수량을 오른쪽으로 이동하면 부호 비트가 빈 비트 위치로 전파됩니다. 부호 없는 수량의 경우 빈 비트 위치가 0으로 채워집니다.

  • 인수를 일치시키기 위해 해당 피연산자의 형식에 부호가 있는지 여부에 따라 결정되는 오버로드된 연산자의 피연산자 또는 오버로드된 함수의 인수입니다. 오버로드된 연산자의 정의에 대한 자세한 내용은 오버로드된 연산자를 참조하십시오.

참고 항목

참조

표준 변환