일반적인 산술 변환이

대부분의 C 연산자 식의 피연산자가 일반 형식으로 가져올 수 또는 시스템 작업에 사용 되는 정수 크기 short 값을 확장 하는 형식 변환을 수행 합니다.C 연산자에서 수행 하는 변환에 특정 연산자와 피연산자 또는 피연산자의 형식에 따라 달라 집니다.그러나 다양 한 연산자 정수 계열 및 부동 형식 피연산자에 비슷한 변환이 수행 됩니다.이러한 변환 "산술 변환 됩니다." 라고 합니다. 호환 되는 형식으로 변환 하는 피연산자 값 해당 값으로 변경이 됩니다.

아래에 요약 하는 산술 변환이 "일반적인 산술 변환이." 이라고 합니다. 다음이 단계는 산술 형식이 이항 연산자에만 적용 됩니다.또한 결과 형식이 일반 형식으로 됩니다.어떤 변환이 실제로 일어날 확인 하려면 컴파일러 다음과 같은 알고리즘을 이진 연산 식에 적용 합니다.다음 단계는 우선 순위를 하지 않습니다.

  1. 피연산자 중 하나가 형식인 경우 long double, 다른 피연산자 형식으로 변환 되며 long double.

  2. 위의 조건이 충족 되지 않을 경우 및 피연산자의 형식이 이중, 다른 피연산자 형식으로 변환 되며 이중.

  3. 위의 두 가지 조건이 충족 되 고 두 피연산자의 형식이 경우 부동 소수점, 다른 피연산자 형식으로 변환 되며 부동 소수점.

  4. 위의 세 가지 조건이 충족 되지 않으면 (없음 피연산자는 부동의 형식), 정수 변환 피연산자에는 다음과 같이 수행 됩니다:

    • 피연산자 중 하나가 형식인 경우 unsigned long, 다른 피연산자 형식으로 변환 되며 unsigned long.

    • 위의 조건이 충족 되지 않을 경우 및 피연산자의 형식이 , 다른 종류의 unsigned int, 두 피연산자 형식으로 변환 됩니다 unsigned long.

    • 위의 두 조건이 충족 되지, 피연산자의 형식이 경우 , 다른 피연산자 형식으로 변환 되며 .

    • 위의 세 가지 조건이 충족 되지, 피연산자의 형식이 경우 unsigned int, 다른 피연산자 형식으로 변환 되며 unsigned int.

    • 위의 조건 중 만족 하는 경우 두 피연산자 형식으로 변환 됩니다 int.

다음 코드 변환 규칙을 보여 줍니다.

float   fVal;
double  dVal;
int   iVal;
unsigned long ulVal;

dVal = iVal * ulVal; /* iVal converted to unsigned long
                      * Uses step 4.
                      * Result of multiplication converted to double 
                      */
dVal = ulVal + fVal; /* ulVal converted to float
                      * Uses step 3.
                      * Result of addition converted to double 
                      */ 

참고 항목

참조

C 연산자