부호 있는 정수 계열 형식에서 변환Conversions from Signed Integral Types

부호 있는 정수를 크기가 같거나 더 큰 부호 없는 정수로 변환하는데 부호 있는 정수의 값이 음수가 아니면 값이 변경되지 않습니다.When a signed integer is converted to an unsigned integer with equal or greater size and the value of the signed integer is not negative, the value is unchanged. 변환은 부호 있는 정수를 부호 확장하여 수행됩니다.The conversion is made by sign-extending the signed integer. 부호 있는 정수는 상위 비트를 잘라 더 짧은 부호 있는 정수로 변환됩니다.A signed integer is converted to a shorter signed integer by truncating the high-order bits. 결과는 이 예제에서 볼 수 있는 것과 같이 부호 없는 값으로 해석됩니다.The result is interpreted as an unsigned value, as shown in this example.

int i = -3;  
unsigned short u;  

u = i;   
printf_s( "%hu\n", u );  // Prints 65533  

long int 또는 unsigned long int 값을 float 값으로 변환할 때 정밀도가 다소 손실될 수 있다는 점을 제외하면 부호 있는 정수를 부동 값으로 변환할 때 아무 정보도 손실되지 않습니다.No information is lost when a signed integer is converted to a floating value, except that some precision may be lost when a long int or unsigned long int value is converted to a float value.

다음 표에서는 부호 있는 정수 계열 형식으로부터의 변환을 요약하여 보여 줍니다.The following table summarizes conversions from signed integral types. 이 표에서는 char 형식에 기본적으로 부호가 있다고 간주합니다.This table assumes that the char type is signed by default. 컴파일 시간 옵션을 사용하여 char 형식의 기본값을 unsigned로 변경할 경우 다음 표인 "부호 있는 정수 형식에서 변환" 대신 unsigned char 형식에 대한 부호 없는 정수 형식에서 변환 표에 나와 있는 변환이 적용됩니다.If you use a compile-time option to change the default for the char type to unsigned, the conversions given in the Conversions from Unsigned Integral Types table for the unsigned char type apply instead of the conversions in the following table, Conversions from Signed Integral Types.

부호 있는 정수 계열 형식에서 변환Conversions from Signed Integral Types

시작From 대상To 메서드Method
char1char1 shortshort 부호 확장Sign-extend
charchar longlong 부호 확장Sign-extend
charchar unsigned charunsigned char 패턴 유지(상위 비트가 부호 비트로의 기능을 잃음)Preserve pattern; high-order bit loses function as sign bit
charchar unsigned shortunsigned short short로 부호 확장(shortunsigned short로 변환)Sign-extend to short; convert short to unsigned short
charchar unsigned longunsigned long short로 부호 확장(longunsigned long으로 변환)Sign-extend to long; convert long to unsigned long
charchar floatfloat long으로 부호 확장(longfloat로 변환)Sign-extend to long; convert long to float
charchar doubledouble long으로 부호 확장(longdouble로 변환)Sign-extend to long; convert long to double
charchar long doublelong double long으로 부호 확장(longdouble로 변환)Sign-extend to long; convert long to double
shortshort charchar 하위 바이트 유지Preserve low-order byte
shortshort longlong 부호 확장Sign-extend
shortshort unsigned charunsigned char 하위 바이트 유지Preserve low-order byte
shortshort unsigned shortunsigned short 비트 패턴 유지(상위 비트가 부호 비트로의 기능을 잃음)Preserve bit pattern; high-order bit loses function as sign bit
shortshort unsigned longunsigned long short로 부호 확장(longunsigned long으로 변환)Sign-extend to long; convert long to unsigned long
shortshort floatfloat long으로 부호 확장(longfloat로 변환)Sign-extend to long; convert long to float
shortshort doubledouble long으로 부호 확장(longdouble로 변환)Sign-extend to long; convert long to double
shortshort long doublelong double long으로 부호 확장(longdouble로 변환)Sign-extend to long; convert long to double
longlong charchar 하위 바이트 유지Preserve low-order byte
longlong shortshort 하위 단어 유지Preserve low-order word
longlong unsigned charunsigned char 하위 바이트 유지Preserve low-order byte
longlong unsigned shortunsigned short 하위 단어 유지Preserve low-order word
longlong unsigned longunsigned long 비트 패턴 유지(상위 비트가 부호 비트로의 기능을 잃음)Preserve bit pattern; high-order bit loses function as sign bit
longlong floatfloat float로 표시.Represent as float. long을 정확히 나타낼 수 없는 경우 일부 정밀도가 손실됩니다.If long cannot be represented exactly, some precision is lost.
longlong doubledouble double로 표시.Represent as double. longdouble로 정확히 나타낼 수 없는 경우 일부 정밀도가 손실됩니다.If long cannot be represented exactly as a double, some precision is lost.
longlong long doublelong double double로 표시.Represent as double. longdouble로 정확히 나타낼 수 없는 경우 일부 정밀도가 손실됩니다.If long cannot be represented exactly as a double, some precision is lost.
  1. 모든 char 항목에서는 char 형식에 기본적으로 부호가 있다고 간주합니다.All char entries assume that the char type is signed by default.

    Microsoft 전용Microsoft Specific

    Microsoft 32비트 C 컴파일러의 경우 정수는 long과 동일합니다.For the Microsoft 32-bit C compiler, an integer is equivalent to a long. int 값의 변환은 long과 동일하게 진행됩니다.Conversion of an int value proceeds the same as for a long.

    Microsoft 전용 종료END Microsoft Specific

참고 항목See Also

할당 변환Assignment Conversions