size_t와 unsigned int의 차이점은 무엇입니까?
에 대해 너무 혼란 스럽습니다 size_t
. 나는 인터넷에서 검색했으며 모든 곳 size_t
에서 서명되지 않은 유형이므로 음수가 아닌 값만 나타낼 수 있습니다.
내 첫 번째 질문은 음수가 아닌 값만 나타내는 데 사용되는 경우 unsigned int
대신 왜 사용 하지 size_t
않습니까?
내 두 번째 질문은 : 있습니다 size_t
및 unsigned int
교환 여부? 그렇지 않다면 왜?
그리고 누구든지 size_t
그 작동에 대한 좋은 예를 들어 줄 수 있습니까?
음수가 아닌 값을 나타내는 데 사용되는 경우
unsigned int
대신 사용 하지 않는 이유size_t
때문에이 unsigned int
유일한 부호없는 정수 타입이다. size_t
의 하나가 될 수있는 unsigned char
, unsigned short
, unsigned int
, unsigned long
또는 unsigned long long
, 구현에 따라.
두 번째 질문이다
size_t
하고unsigned int
왜 교환 여부이며, 그렇지 않은 경우?
위에 설명 된 이유로 상호 교환 할 수 없습니다 ^^
.
그리고 누구든지 내게 size_t와 그것의 간단한 작업의 좋은 예를 줄 수 있습니까?
"간단한 작업"이 의미하는 바를 이해하지 못합니다. 다른 서명되지 않은 유형과 같이 작동합니다 (특히 입력 된 유형과 같이). size_t
개체의 크기를 설명 할 때 사용하는 것이 좋습니다 . 특히, sizeof
연산자와 같은 다양한 표준 라이브러리 함수 strlen()
는 return size_t
.
보너스 : 여기 에 size_t
(그리고 밀접하게 관련된 ptrdiff_t
유형)에 대한 좋은 기사 가 있습니다. 그것은 당신이 그것을 사용해야하는 이유를 아주 잘 설명합니다.
C에는 5 가지 표준 부호없는 정수 유형이 있습니다.
unsigned char
unsigned short
unsigned int
unsigned long
unsigned long long
크기와 범위에 대한 다양한 요구 사항이 있습니다 (간단히 말하면 각 유형의 범위는 다음 유형 범위의 하위 집합이지만 일부는 동일한 범위를 가질 수 있음).
size_t
A는 typedef
(위하지만 아마도의 아마 하나 일부 부호없는 형식에 대한 (즉, 별칭)를 확장 부호없는 정수 타입 그 가능성 비록,). sizeof
연산자가 산출 한 유형 입니다.
한 시스템에서는 unsigned int
크기를 나타내는 데 사용 하는 것이 합리적 일 수 있습니다 . 다른에, 그것을 사용하는 것이 더 적합 할 수 있습니다 unsigned long
또는 unsigned long long
. ( 또는 일 size_t
가능성이 낮지 만 허용됨).unsigned char
unsigned short
의 목적은 size_t
프로그래머가 크기를 나타내는 데 사용되는 미리 정의 된 유형 에 대해 걱정할 필요가 없도록 하는 것 입니다.
sizeof
양보 를 가정 하는 코드는 unsigned int
이식 할 수 없습니다. a를 산출한다고 가정하는 코드는 size_t
이식성이 더 높습니다.
size_t
특정 제한이 있습니다.
http://www.cplusplus.com/reference/cstring/size_t/ 에서 인용 :
기본 부호없는 정수 유형 중 하나의 별칭입니다.
모든 객체의 크기를 바이트 단위로 나타낼 수있는 유형입니다 . size_t는 sizeof 연산자에 의해 반환되는 유형이며 크기와 개수를 표시하기 위해 표준 라이브러리에서 널리 사용됩니다.
unsigned int
의 크기 int
가 데이터 모델에 의해 지정 되기 때문에 서로 바꿔서 사용할 수 없습니다 . 예를 들어 LLP64는 32 비트 int
를 사용하고 ILP64는 64 비트를 사용합니다 int
.
size_t는 데이터 객체의 크기를 저장하는 데 사용되며 특정 C 구현에서 생성 할 수있는 모든 데이터 객체의 크기를 유지할 수 있습니다. 이 데이터 유형은 더 작거나 (비트 수) 더 크거나 unsigned int와 정확히 동일 할 수 있습니다.
size_t 유형은 C / C ++ 언어의 기본 부호없는 정수 유형입니다. sizeof 연산자에 의해 반환 된 결과의 유형입니다. 유형의 크기는 이론적으로 가능한 모든 유형 배열의 최대 크기를 저장할 수 있도록 선택됩니다. 32 비트 시스템에서 size_t는 32 비트를 사용하고 64 비트에서는 64 비트를 사용합니다. 즉, size_t 유형의 변수는 포인터를 안전하게 저장할 수 있습니다. 예외는 클래스 함수에 대한 포인터이지만 이것은 특별한 경우입니다. size_t는 포인터를 저장할 수 있지만 해당 용도로 다른 부호없는 정수 유형 uintptr_t를 사용하는 것이 좋습니다 (이름은 기능을 반영 함). size_t 및 uintptr_t 유형은 동의어입니다. size_t 유형은 일반적으로 루프 카운터, 배열 인덱싱 및 주소 산술에 사용됩니다. size_t 유형의 가능한 최대 값은 constant SIZE_MAX입니다.
다른 답변 외에도 코드를 문서화하고 사람들에게 메모리의 개체 크기에 대해 이야기하고 있음을 알려줍니다.
간단히 말해서 size_t는 플랫폼 및 구현에 따라 다르지만 unsigned int는 플랫폼에만 의존합니다.
참고 URL : https://stackoverflow.com/questions/19732319/difference-between-size-t-and-unsigned-int
'Programing' 카테고리의 다른 글
포드 설정을 실행하면 "잘못된 인터프리터 : 해당 파일이나 디렉토리가 없습니다." (0) | 2020.10.11 |
---|---|
C 전처리기를 사용하여 int를 문자열에 연결 (0) | 2020.10.10 |
Avro 대 Parquet (0) | 2020.10.10 |
Python : 'from X import Y'로 가져온 컴포넌트 Y를 다시로드 하시겠습니까? (0) | 2020.10.10 |
오류로 경고-제거하는 방법 (0) | 2020.10.10 |