자세한 내용은 답변을 참조하십시오. C ++ 표준의 §5 / 9 섹션에 나와있는 내용을보십시오
산술 또는 열거 유형의 피연산자를 기대하는 많은 이진 연산자는 비슷한 방식으로 변환을 유발하고 결과 유형을 생성합니다. 목적은 결과의 유형이기도 한 공통 유형을 생성하는
것 입니다.
이 패턴을 일반적인 산술 변환이라고하며 다음과 같이 정의됩니다.
— 피연산자 중 하나가 long double 유형 인 경우 다른 피연산자는 long double로 변환됩니다.
— 그렇지 않으면 두 피연산자가 두 배인 경우 다른 피연산자가 두 배로 변환됩니다.
— 그렇지 않으면, 피연산자 중 하나가 float이면 다른 피연산자가 float로 변환됩니다.
— 그렇지 않으면, 적분 프로모션 (4.5)은 두 피연산자 모두에서 수행되어야합니다 .54)
— 그런 다음 어느 피연산자가 부호없는 long이면 다른 피연산자는 부호없는 long으로 변환됩니다.
— 그렇지 않으면, 하나의 피연산자가 long int이고 다른 피연산자가 int이면 long int가 unsigned int의 모든 값을 나타낼 수 있으면 unsigned int는 long int로 변환됩니다. 그렇지 않으면 두 피연산자가 부호없는 long int로 변환됩니다.
— 그렇지 않으면, 피연산자가 길면 다른 피연산자는 long으로 변환됩니다.
— 그렇지 않으면, 피연산자가 서명되지 않은 경우, 다른 피연산자는 서명되지 않은 것으로 변환됩니다.
[참고 : 그렇지 않으면, 남은 유일한 경우는 두 피연산자가 모두 int입니다]
^
XOR입니다.