"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 일반적인 산술 변환은 부호 있는 피연산자와 부호 없는 피연산자가 있는 이진 \"+\" 연산자의 결과 유형을 어떻게 결정합니까?

일반적인 산술 변환은 부호 있는 피연산자와 부호 없는 피연산자가 있는 이진 \"+\" 연산자의 결과 유형을 어떻게 결정합니까?

2024년 12월 22일에 게시됨
검색:566

How Do Usual Arithmetic Conversions Determine the Result Type of Binary \

서명된 및 서명되지 않은 이진 연산자에 대한 승격 규칙

다음 코드 조각을 고려하십시오.

// Snippet 1
int max = std::numeric_limits::max();
unsigned int one = 1;
unsigned int result = max   one;
// Snippet 2
unsigned int us = 42;
int neg = -43;
int result = us   neg;

피연산자의 부호가 다른 경우 " " 연산자는 어떻게 올바른 결과 유형을 결정합니까?

연산자는 "일반적인 산술 변환"을 따릅니다. 피연산자 유형에 따라 유형 변환 단계를 지정하는 규칙입니다. 이 규칙에 따라 피연산자 중 하나가

  • long double이면 두 피연산자가 모두 long double로 변환됩니다.
  • double, 두 피연산자가 모두 double로 변환됩니다.
  • float, 두 피연산자는 모두 float로 변환됩니다.
  • unsigned long, 다른 피연산자는 unsigned로 변환됩니다. long.
  • long int 및 다른 피연산자 unsigned int, unsigned int의 값이 long int로 표현될 수 있는 경우 두 피연산자는 모두 unsigned long int로 변환됩니다. 그렇지 않으면 둘 다 long으로 변환됩니다.
  • long, 다른 피연산자는 long으로 변환됩니다.
  • unsigned, 다른 피연산자는 unsigned로 변환됩니다.

이후 int와 unsigned int는 규칙에서 상호 교환 가능하며, 더 넓은 유형(unsigned int)을 가진 피연산자가 결과로 선택됩니다. type.

이는 조각 1에서 결과가 unsigned int(2147483648)이고 조각 2에서 결과가 int(-1)인 이유를 설명합니다. 부호 있는 피연산자(neg)는 암시적으로 unsigned int로 변환되어 후자의 경우 정의되지 않은 값이 생성됩니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3