정수 계열 확장
정수 계열 형식의 개체를 더 포괄적인 다른 정수 계열 형식(광범위한 값 집합을 나타낼 수 있는 형식)으로 변환할 수 있습니다. 이렇게 변환 형식을 확대하는 것을 "정수 계열 확장"이라고 합니다. 정수 계열 확장을 사용하면 다른 형수 계열 형식을 사용할 때마다 식에 다음을 사용할 수 있습니다.
char 및 short int 형식의 개체, 리터럴 및 상수
열거형 형식
int 비트 필드
열거자
C++ 확장은 "값을 보존"합니다. 즉, 확장 후의 값이 확장 전의 값과 똑같습니다. 값을 보존하는 확장에서 int가 원래 형식의 전체 범위를 나타낼 수 있을 경우 짧은 정수 계열 형식의 개체(예: 비트 필드 또는 char 형식의 개체)가 int 형식으로 확장됩니다. int가 값의 전체 범위를 나타낼 수 없으면 개체가 unsigned int 형식으로 확장됩니다. 이 전략은 ANSI C에 사용되는 전략과 같지만 값을 보존하는 변환은 개체의 "부호 유무"를 보존하지 않습니다.
값을 보존하는 확장과 부호 유부를 보존하는 확장은 보통 동일한 결과를 생성합니다. 하지만 확장된 개체가 다음 중 하나일 경우 다른 결과가 생성될 수 있습니다.
/, %, /=, %=, <, <=, > 또는 **>=**의 피연산자
이 연산자는 부호를 사용하여 결과를 확인합니다. 따라서 피연산자에 적용될 경우 값을 보존하는 확장과 부호를 보존하는 확장이 다른 결과를 생성합니다.
>> 또는 **>>=**의 왼쪽 피연산자
이 연산자는 시프트 연산을 수행할 때 부호 있는 수량과 부호 없는 수량을 다르게 처리합니다. 부호 있는 수량의 경우 수량을 오른쪽으로 이동하면 부호 비트가 빈 비트 위치로 전파됩니다. 부호 없는 수량의 경우 빈 비트 위치가 0으로 채워집니다.
인수를 일치시키기 위해 해당 피연산자의 형식에 부호가 있는지 여부에 따라 결정되는 오버로드된 연산자의 피연산자 또는 오버로드된 함수의 인수입니다. 오버로드된 연산자의 정의에 대한 자세한 내용은 오버로드된 연산자를 참조하십시오.