C의 벡터 크기 이상
C에서 벡터 컨테이너의 size() 메서드는 벡터의 요소 수를 반환합니다. 그러나 다음 코드 조각에서 볼 수 있듯이 벡터가 비어 있으면 당황스러운 동작이 발생합니다.
#include <vector> #include <iostream> using namespace std; int main() { vector<int> value; cout << value.size() << endl; // Output: 0 cout << value.size() - 1 << endl; // Output: 18446744073709551615 }
두 번째 출력이 -1이 아닌 이유는 무엇입니까?
첫 번째 cout 문은 벡터가 비어 있음을 나타내는 0을 올바르게 인쇄합니다. 그러나 두 번째 명령문은 놀랍게도 예상한 -1이 아닌 매우 큰 양수를 출력합니다. 이는 vector::size()가 size_t 유형의 부호 없는 정수를 반환하기 때문에 발생합니다. 이름에서 알 수 있듯이 부호 없는 정수는 음수를 나타낼 수 없습니다.
따라서 size_t 값을 그 자체에서 빼면 기본적으로 해당 유형에 대해 표현할 수 있는 최대 숫자로 래핑됩니다. 이 경우 size_t는 일반적으로 64비트 정수이므로 보유할 수 있는 최대 값은 18446744073709551615입니다. 이 값은 두 번째 cout 문의 출력으로 인쇄됩니다.
두 번째 계산?
다음 계산 순서는 다음과 같습니다. 두 번째 cout의 동작:
위 내용은 왜 C에서 `Vector.size() - 1`이 -1을 반환하지 않습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!