부호 없는 정수와 음의 부호 있는 정수 비교 이해
제공된 C 프로그램에서 b를 비교할 때 "Greater"라는 출력이 관찰되는 것은 당황스럽습니다. (-1) -1이 산술적으로 다음보다 작음에도 불구하고 a.size() (0) 사용 0. 이 예상치 못한 동작은 부호 있는 정수 유형과 부호 없는 정수 유형 간의 근본적인 차이로 인해 발생합니다.
이 경우 a.size()는 벡터의 크기를 나타내는 부호 없는 정수를 반환합니다. 대조적으로, b는 부호 있는 정수입니다. 이 두 값을 비교할 때 부호 있는 b는 자동으로 부호 없는 유형으로 승격됩니다. 이 프로모션은 -1을 0을 초과하는 부호 없는 큰 값으로 변환합니다.
이 동작은 벡터 크기에만 국한되지 않습니다. 다음 코드 조각은 동일한 문제를 보여줍니다.
#include <iostream> int main() { std::cout << std::boolalpha; unsigned int a = 0; int b = -1; std::cout << (b < a) << "\n"; }
이 코드를 실행하면 "false"가 출력됩니다. 이는 부호 없는 유형의 컨텍스트에서 -1이 0보다 큰 것으로 간주됨을 나타냅니다.
이러한 혼란을 피하려면 부호 있는 정수와 부호 없는 정수의 동작이 서로 다르므로 의도한 작업을 신중하게 고려하지 않고 혼합해서는 안 된다는 점을 기억하는 것이 중요합니다.
위 내용은 C에서 부호 있는 정수와 부호 없는 정수를 비교할 때 -1이 0보다 큰 것으로 비교되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!