부호 혼합 이진 연산자 승격 규칙
산술 유형의 피연산자를 취하는 연산자는 자동 변환을 수행하고 미리 정의된 규칙에 따라 결과 유형을 결정합니다. . 피연산자의 부호가 다른 경우 C는 C 표준의 §5/9에 설명된 일반적인 산술 변환 프로세스를 따릅니다.
첫 번째 예에서는
int max = std::numeric_limits<int>::max(); unsigned int one = 1; unsigned int result = max + one;
적분 승격이 수행됩니다. max와 one을 모두 int로 변환하면 unsigned int 결과가 생성됩니다. max의 부호 있는 값은 무시되어 2147483648의 결과가 나옵니다.
두 번째 예에서:
unsigned int us = 42; int neg = -43; int result = us + neg;
변환은 부호 없는 피연산자가 우선한다는 규칙을 따르므로 neg가 됩니다. 부호 없는 유형으로 변환됩니다. us neg 값은 int로 표현할 수 없기 때문에 이 변환으로 인해 int 결과에 대한 구현 정의 값이 생성됩니다.
위 내용은 C \의 일반적인 산술 변환은 부호 있는 정수와 부호 없는 정수 연산이 혼합된 작업을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!