size_t가 서명되지 않은 이유는 무엇입니까?
질문:
그의 책에서 Bjarne Stroustrup은 다음과 같이 조언합니다. 양의 정수를 표현하기 위한 추가 비트를 얻기 위해 부호 없는 정수를 사용하는 것에 반대합니다. 그러나 배열 및 문자열 크기를 나타내는 데 일반적으로 사용되는 유형인 size_t는 부호가 없습니다. 이것이 실수였습니까? size_t의 사용을 최소화해야 합니까?
답변:
size_t는 역사적인 이유로 서명되지 않았습니다.
아키텍처 제한:
16비트 포인터를 사용하는 이전 아키텍처에서는 문자열을 32KB로 제한하는 것이 비실용적입니다. 이 문제를 해결하기 위해 C 표준에서는 size_t에 대응하는 서명된 ptrdiff_t가 17비트의 유효 범위를 갖도록 요구합니다.
임베디드 시스템:
특정 임베디드 프로그래밍에서 이러한 역사적 이유는 여전히 유효합니다.
부호 없는 유형의 단점:
그러나 최신 32비트 및 64비트 프로그래밍에서 부호 없는 유형은 심각한 단점을 나타냅니다. :
결론:
size_t를 unsigned로 만들기로 한 결정은 실수가 아니었습니다. 당시의 건축적 한계 그러나 현대 프로그래밍 관행에서는 수치 연산에 부호 없는 유형을 사용하는 것이 고유한 단점으로 인해 권장되지 않습니다.
위 내용은 알려진 단점에도 불구하고 'size_t'가 서명되지 않은 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!