"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C/C++에서 `size_t`가 서명되지 않은 이유: 역사적 필요성 또는 현대 버그 자석?

C/C++에서 `size_t`가 서명되지 않은 이유: 역사적 필요성 또는 현대 버그 자석?

2024년 11월 16일에 게시됨
검색:109

 Why is `size_t` Unsigned in C/C  : A Historical Necessity or a Modern Bug Magnet?

size_t가 Unsigned인 이유는 무엇입니까?

Bjarne Stroustrup은 "양수를 표현하기 위해 1비트를 더 얻기 위해 int 대신 unsigned를 사용하는 것은 결코 좋은 생각이 아닙니다"라고 말했습니다. size_t를 서명되지 않은 상태로 만드는 결정에 대한 우려가 제기되었습니다.

역사적 기원

원래 size_t는 DOS 시스템과 같은 16비트 포인터가 있는 아키텍처를 수용하기 위해 부호 없이 만들어졌습니다. 문자열 크기 제한을 방지하기 위해 C 표준에서는 size_t의 서명된 대응 부분인 ptrdiff_t가 사실상 17비트가 되도록 규정했습니다.

현재 관련성

이러한 역사적 이유는 임베디드 시스템에 여전히 적용될 수 있지만, 최신 32비트 및 64비트 프로그래밍에서는 덜 그렇습니다. 이러한 환경에서는 숫자에 부호 없는 유형을 사용하는 데 실질적인 이점이 없으며 이를 사용하면 C/C 암시적 변환 규칙(예: string("Hi").length()

결론

size_t를 unsigned로 만들기로 한 결정은 실수가 아니라 당시의 제한된 시스템에 대한 실용적인 선택이었습니다. 그러나 현대 프로그래밍 관행에서는 일반적으로 typedef int MyType의 자기 설명적 특성이 유익한 특정 상황을 제외하고 인터페이스와 숫자에 부호 없는 정수의 사용을 최소화하는 것이 좋습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3