서명된 바이너리 연산자와 서명되지 않은 바이너리 연산자에 대한 승격 규칙
다음 코드 조각을 고려하세요.
// Snippet 1 int max = std::numeric_limits<int>::max(); unsigned int one = 1; unsigned int result = max + one;
// Snippet 2 unsigned int us = 42; int neg = -43; int result = us + neg;
" " 연산자는 이러한 경우에 서로 다른 결과 유형을 어떻게 결정합니까? 피연산자의 부호가 있습니까?
연산자는 피연산자 유형에 따라 유형 변환 단계를 지정하는 "일반적인 산술 변환" 규칙을 따릅니다. 이 규칙에 따르면 피연산자 중 하나가
이후 int와 unsigned int는 규칙에서 상호 교환 가능하며, 더 넓은 유형(unsigned int)을 가진 피연산자가 결과로 선택됩니다. type.
이는 Snippet 1에서 결과가 unsigned int(2147483648)이고 Snippet 2에서 결과가 int(-1)인 이유를 설명합니다. 부호 있는 피연산자(neg)는 암시적으로 unsigned int로 변환되어 후자의 경우 정의되지 않은 값이 됩니다.
위 내용은 일반적인 산술 변환은 부호 있는 피연산자와 부호 없는 피연산자가 있는 이진 \' \' 연산자의 결과 유형을 어떻게 결정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!