Programing

size_t와 unsigned int의 차이점은 무엇입니까?

lottogame 2020. 10. 10. 09:32
반응형

size_t와 unsigned int의 차이점은 무엇입니까?


에 대해 너무 혼란 스럽습니다 size_t. 나는 인터넷에서 검색했으며 모든 곳 size_t에서 서명되지 않은 유형이므로 음수가 아닌 값만 나타낼 수 있습니다.

내 첫 번째 질문은 음수가 아닌 값만 나타내는 데 사용되는 경우 unsigned int대신 왜 사용 하지 size_t않습니까?

내 두 번째 질문은 : 있습니다 size_tunsigned 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_tA는 typedef(위하지만 아마도의 아마 하나 일부 부호없는 형식에 대한 (즉, 별칭)를 확장 부호없는 정수 타입 그 가능성 비록,). sizeof연산자가 산출 한 유형 입니다.

한 시스템에서는 unsigned int크기를 나타내는 데 사용 하는 것이 합리적 일 수 있습니다 . 다른에, 그것을 사용하는 것이 더 적합 할 수 있습니다 unsigned long또는 unsigned long long. ( 또는 size_t가능성이 낮지 만 허용됨).unsigned charunsigned 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

반응형