C에서는 부호 있는 정수를 부호 없는 정수와 비교할 때 부호 있는 정수가 부호 없는 정수로 승격됩니다. 이는 음수 기호가 무시되고 정수가 큰 양수 값으로 처리된다는 의미입니다.
다음 C 프로그램을 고려하세요.
#include <iostream> #include <vector> int main() { std::vector<int> a; std::cout << "Vector size: " << a.size() << std::endl; int b = -1; if (b < a.size()) std::cout << "Less"; else std::cout << "Greater"; }
이 프로그램에서 벡터 a의 크기는 부호 없는 정수입니다. 그러나 이를 부호 있는 정수 b와 비교할 때 b는 부호 없는 정수로 승격됩니다. 이는 음수 부호가 무시되고 b가 큰 양수 값으로 처리됨을 의미합니다. 따라서 비교 b < a.size()는 항상 false이며 프로그램은 "Greater"를 인쇄합니다.
이 동작을 더 명확하게 보려면 다음 코드 샘플을 고려하십시오.
#include <iostream> int main() { unsigned int a = 0; int b = -1; std::cout << std::boolalpha; std::cout << (b < a) << "\n"; }
이 프로그램은 b가 분명히 a보다 작더라도 false를 출력합니다. 이는 b가 부호 없는 정수로 승격되고 음수 부호가 무시되기 때문입니다.
위 내용은 C는 부호 있는 정수와 부호 없는 정수 간의 비교를 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!