부호가 다를 때 이진 연산자 승격
이진 연산자가 부호가 다른 피연산자에서 작동하는 경우 C 표준은 승격을 결정하기 위한 구체적인 지침을 제공합니다. 규칙과 결과 유형.
표준의 섹션 5/9에 "일반적인 이러한 연산자에 적용되는 산술 변환'을 참조하세요. 이러한 변환은 계층적 순서를 따릅니다.
제공된 코드 예제에 다음 규칙 적용:
예 1:
unsigned int one = 1; int max = std::numeric_limits<int>::max(); unsigned int result = max + one;
unsigned int가 우선하므로 int 규칙의 5단계에서는 모든 피연산자가 unsigned int로 변환됩니다. 따라서 결과는 unsigned int 유형입니다.
예 2:
unsigned int us = 42; int neg = -43; int result = us + neg;
이 경우 규칙에 따라 두 피연산자는 모두 unsigned int로 변환되어야 합니다. 그러나 결과 값(-1)은 unsigned int로 표현할 수 없습니다. 따라서 표현식의 결과 유형은 §4.7/3에 따라 구현 정의됩니다.
위 내용은 C는 부호가 다른 이진 연산자 승격을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!