부호 없는 정수 계열 형식에서 변환

부호 없는 정수가 정수 또는 부동 소수점 형식으로 변환될 때 결과 형식에서 원래 값을 표현할 수 있으면 값이 변경되지 않습니다.

컴파일러가 부호 없는 정수를 더 큰 크기의 정수로 변환하는 경우 값은 부호 확장됩니다. 더 작은 크기의 정수로 변환한 경우에는 상위 비트가 잘립니다. 결과는 다음 예제와 같이 결과 형식을 사용하여 해석됩니다.

unsigned k = 65533;
short j;

j = k;
printf_s( "%hd\n", j );   // Prints -3

컴파일러가 부호 없는 정수를 부동 소수점 형식으로 변환할 때 원래 값을 결과 형식에서 정확하게 표현할 수 없는 경우 결과는 다음으로 높거나 낮은 표현할 수 있는 값입니다.

정수 및 부동 소수점 형식의 크기에 대한 자세한 내용은 기본 형식 스토리지를 참조하세요.

Microsoft 전용

Microsoft 컴파일러에서 unsigned (또는 unsigned int )와 unsigned long 은 고유하지만 같은 형식입니다. unsigned int 값의 변환은 unsigned long의 변환과 동일하게 진행됩니다.

Microsoft 전용 종료

다음 표에서는 부호 없는 정수 계열 형식으로부터의 변환을 요약하여 보여 줍니다.

부호 없는 정수 계열 형식에서 변환표

시작 대상 메서드
unsigned char char 비트 패턴 유지(상위 비트가 부호 비트가 됨)
unsigned char short 0 확장
unsigned char long 0 확장
unsigned char long long 0 확장
unsigned char unsigned short 0 확장
unsigned char unsigned long 0 확장
unsigned char unsigned long long 0 확장
unsigned char float 정확히 float로 변환
unsigned char double 정확히 double로 변환
unsigned char long double 정확히 long double로 변환
unsigned short char 하위 바이트 유지
unsigned short short 비트 패턴 유지(상위 비트가 부호 비트가 됨)
unsigned short long 0 확장
unsigned short long long 0 확장
unsigned short unsigned char 하위 바이트 유지
unsigned short unsigned long 0 확장
unsigned short unsigned long long 0 확장
unsigned short float 정확히 float로 변환
unsigned short double 정확히 double로 변환
unsigned short long double 정확히 long double로 변환
unsigned long char 하위 바이트 유지
unsigned long short 하위 단어 유지
unsigned long long 비트 패턴 유지(상위 비트가 부호 비트가 됨)
unsigned long long long 0 확장
unsigned long unsigned char 하위 바이트 유지
unsigned long unsigned short 하위 단어 유지
unsigned long unsigned long long 0 확장
unsigned long float 가장 가까운 표현 가능 float로 변환
unsigned long double 정확히 double로 변환
unsigned long long double 정확히 long double로 변환
unsigned long long char 하위 바이트 유지
unsigned long long short 하위 단어 유지
unsigned long long long 하위 dword 유지
unsigned long long long long 비트 패턴 유지(상위 비트가 부호 비트가 됨)
unsigned long long unsigned char 하위 바이트 유지
unsigned long long unsigned short 하위 단어 유지
unsigned long long unsigned long 하위 dword 유지
unsigned long long float 가장 가까운 표현 가능 float로 변환
unsigned long long double 가장 가까운 표현 가능한 double로 변환
unsigned long long long double 가장 가까운 표현 가능한 long double로 변환

참조

할당 변환