벡터 크기 이상: 빈 벡터에 대해 Size() - 1이 -1이 아닌 이유
주어진 코드 조각은 C 벡터. 벡터가 비어 있는 경우(예: size() == 0) 크기에서 1을 빼면 예상되는 -1 대신 큰 양수가 반환됩니다.
원인
이 동작을 이해하는 열쇠는 벡터::size()의 데이터 유형에 있습니다. 부호 없는 정수형인 size_t로 정의됩니다. 부호 있는 정수와 달리 부호 없는 정수는 음수 값을 나타낼 수 없습니다.
두 번째 cout: What's Happening?
빈 벡터의 크기(0)에서 1을 뺄 때 , 결과는 오버플로되어 부호 없는 정수에 대해 가능한 가장 큰 값으로 래핑됩니다. 부호 없는 정수는 모든 비트를 사용하여 양수 값을 나타내고, 오버플로되면 0부터 다시 시작하기 때문입니다.
예
예제 코드에서 value .size()는 0이고 value.size() - 1은 18446744073709551615로 오버플로됩니다. 부호 없는 64비트 정수(2^64 - 1)의 최대값입니다.
위 내용은 `size() - 1`이 빈 C 벡터에 대해 큰 양수를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!