따라서 typedef
: ed 원시 데이터 유형 의 이유는 저수준 표현을 추상화하고 이해하기 쉽게 만드는 것 uint64_t
입니다 ( long long
유형 대신 8 바이트).
그러나가 uint_fast32_t
동일한 갖는 typedef
등을 uint32_t
. "빠른"버전을 사용하면 프로그램이 더 빨라 집니까?
따라서 typedef
: ed 원시 데이터 유형 의 이유는 저수준 표현을 추상화하고 이해하기 쉽게 만드는 것 uint64_t
입니다 ( long long
유형 대신 8 바이트).
그러나가 uint_fast32_t
동일한 갖는 typedef
등을 uint32_t
. "빠른"버전을 사용하면 프로그램이 더 빨라 집니까?
답변:
int
일부 플랫폼에서는 16 비트만큼 작을 수 있습니다. 귀하의 응용 프로그램에 충분하지 않을 수 있습니다.uint32_t
존재를 보장하지 않습니다. typedef
정확히 32 비트의 부호없는 정수 유형이있는 경우 구현에서 제공해야하는 것은 선택 사항 입니다. 예를 들어 일부는 9 비트 바이트를 가지고 있으므로 uint32_t
.uint_fast32_t
의도를 명확하게 설명합니다. 성능 관점에서 가장 좋은 최소 32 비트 유형입니다 . uint_fast32_t
실제로 64 비트 길이 일 수 있습니다. 구현에 달려 있습니다....
uint_fast32_t
와 동일한 typedef가 있습니다uint32_t
...
당신이보고있는 것은 표준이 아닙니다. 특정 구현 (BlackBerry)입니다. 그래서 당신은 거기에서 uint_fast32_t
항상 같은 것을 추론 할 수 없습니다 uint32_t
.
또한보십시오:
uint_least32_t
, uint_fast32_t
속도보다는 작은 상점을 선호한다는 점 을 제외 하면 동일 합니다.
차이점은 정확성과 가용성에 있습니다.
여기에 있는 문서 는 다음과 같이 말합니다.
너비가 각각 정확히 8, 16, 32 및 64 비트 인 부호없는 정수 유형 ( 구현이 유형을 직접 지원하는 경우에만 제공됨 ) :
uint8_t uint16_t uint32_t uint64_t
과
너비가 각각 최소 8, 16, 32 및 64 비트 인 가장 빠른 부호없는 부호없는 정수 유형
uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t
따라서 정확히 비트 uint32_t
가있는 유형 이라는 차이점이 매우 분명 하며 구현시 정확히 32 비트 유형이있는 경우에만 이를 제공해야하며 해당 유형을 . 즉, 사용 가능 하거나 사용 가능 하지 않을 수 있습니다 . 32
uint32_t
uint32_t
한편, uint_fast32_t
보유 일종 이상의 구현이 형식 정의를 수있는 경우에도 수단, 32 비트, uint32_t
같은 uint_fast32_t
경우 는 제공한다 uint32_t
. 가 제공하지 않는 경우 uint32_t
, 다음 uint_fast32_t
적어도이 모든 유형의 타입 정의 될 수있다 32
비트.
uint32_t
모든 시스템 (존재하는 경우)에서 정확히 32 비트이므로 64 비트와 비교하면 빠르지 않을 수 있습니다. uint_fast32_t
반면 에 최소 32 비트는 64 비트 일 수도 있습니다.
uint16_t x;
ARM7-TDMI의 32 비트 레지스터에 저장되는 경우 코드 x++;
를 x=((x+1)<<16)>>16);
. 해당 플랫폼의 컴파일러에서는이 를 피하기 위해 uint_fast16_t
와 동의어로 정의 될 가능성이 큽니다 uint32_t
.
[u]int_(fast|least)N_t
선택 사항이 아닌가? 표준에서 64 비트 이상의 기본 유형을 지원하기 위해 모든 아키텍처가 반드시 필요한 것은 아닙니다. 그러나에 대한 문구는 stdint.h
반드시해야 함 을 의미합니다. 64 비트 컴퓨팅이 주류가되기 몇 년 전인 1999 년 이후 (많은 경우 여전히 현재의) 임베디드 아키텍처에 뒤쳐진 지연은 말할 것도없이 우리가 시행해 온 것이 이상해 보입니다. 이것은 나에게 큰 감독처럼 보입니다.
당신은 할 때 #include inttypes.h
프로그램에서, 당신은 정수를 표현하기위한 다른 방법의 무리에 액세스 할 수 있습니다.
uint_fast * _t 유형은 주어진 비트 수를 나타내는 가장 빠른 유형을 정의합니다.
다음과 같이 생각해보십시오. 유형의 변수를 정의 short
하고 프로그램에서 여러 번 사용하면 완전히 유효합니다. 그러나 작업중인 시스템은 유형 값으로 더 빠르게 작동 할 수 있습니다 int
. 변수를 type으로 정의함으로써 uint_fast*t
컴퓨터는 작업 할 수있는 가장 효율적인 표현을 선택합니다.
이러한 표현 사이에 차이가 없으면 시스템은 원하는 것을 선택하고 전체적으로 일관되게 사용합니다.