서명된 및 서명되지 않은 이진 연산자에 대한 승격 규칙
다음 코드 조각을 고려하십시오.
// 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;
피연산자의 부호가 다른 경우 " " 연산자는 어떻게 올바른 결과 유형을 결정합니까?
연산자는 "일반적인 산술 변환"을 따릅니다. 피연산자 유형에 따라 유형 변환 단계를 지정하는 규칙입니다. 이 규칙에 따라 피연산자 중 하나가
이후 int와 unsigned int는 규칙에서 상호 교환 가능하며, 더 넓은 유형(unsigned int)을 가진 피연산자가 결과로 선택됩니다. type.
이는 조각 1에서 결과가 unsigned int(2147483648)이고 조각 2에서 결과가 int(-1)인 이유를 설명합니다. 부호 있는 피연산자(neg)는 암시적으로 unsigned int로 변환되어 후자의 경우 정의되지 않은 값이 생성됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3