int8_t, int_least8_t 및 int_fast8_t의 차이는 무엇입니까?
int 타입의 차이점은 무엇입니까?int8_t
,int_least8_t
그리고.int_fast8_t
?
그 차이는 Carl Norum이 인용한 C99 표준의 섹션에 정의되어 있다.하지만 예를 들면 유용할 수 있다.
36비트 시스템용 C 컴파일러가 있다고 가정합니다.char
= 9비트,short
= 18비트,int
= 36비트 및long
= 72비트그리고나서
int8_t
는 존재하지 않습니다.이는 패딩 없이 정확히8개의 값 비트를 갖는다는 제약조건을 만족시키는 방법이 없기 때문입니다.int_least8_t
의 유형 정의입니다.char
~가 아닙니다.short
또는int
표준에서는 최소 8비트의 최소 타입이 필요하기 때문입니다.int_fast8_t
무엇이든 될 수 있다.그것은 아마도 의 타이프 기술일 것이다.int
"최신" 크기가 "빠른" 것으로 간주되는 경우.
여기는 개념적으로 단순한 답:int*N_t 세가지 유형의 모든의 폭 >야 한다.)NintN_t다 정확히 N비트, int_leastN_t은 가장 덜( 좁은)그런 타입, 그리고 int_fast 있다.N_t는 가장 빠른 그런 타입.
예를 들어, 8비트 바이트와 32비트 빠른 등록 작업을 수행하고int_least8_tint8_t과 기계에 서명한 까맣게 되지만 int_fast8_t int32_t에 앨리어스는 앨리어스고 있다.반면에, 구현 그들을 정의하는 int_least24_t과 int_fast24_t 둘 다int24_t 남아 한정되지 않은과 int32_t에 aliased 것을 선택했다.
Edit:Technophile 아래 지적한 빠른 형식에 대한 실제적인 문제는 기억이 아니라 등록(일반적으로, 레지스터의low-order 비트에 대한 작업 만큼 빠른 전체 레지스터에서 할 수 있).예를 들어, 기리는 int8_t 위해 쓰고 32비트 단어가 들어 있는 적재할 경우32-word에서 보관되었다 반면에 읽지 않고 쓸 수 있고, 그리고 나서 다시 그것을 쓰는, 바이트 수정 요구할 수 있다.
intN_t
라고uintN_t
)은, 모든 C99 실장에서는 필수는 아닙니다.이러한 유형은 "정확한 너비 정수 유형"입니다.필요한 것은, 필요한 실장(기본적으로 모든 데스크탑 컴퓨터)입니다.
int_leastN_t
모든 99구현에 N8,16,32및 64의 값에 필요합니다.이것은"minimum-width 정수 형식".
int_fastN_t
모든 99구현에 N8,16,32및 64의 값에 필요합니다.이것은" 빠른 minimum-width 정수 형식".
규격 섹션 7.8.1.1 정확한 폭 정수형 항목 1에서:
typedef name
_t
N은 너비 N, 패딩 비트 없음 및 2의 보어 표현으로 부호 있는 정수 유형을 지정합니다.따라서, 는 정확히 8비트의 폭을 갖는 부호 있는 정수형을 나타냅니다.
발신인: 7.18.1.2 최소폭 정수형, 제1항:
typedef명 N은
_t
폭이 N 이상인 부호 있는 정수형을 지정하기 때문에 크기가 작은 부호 있는 정수형이 적어도 지정된 폭을 가지지 않도록 합니다.따라서, 는 폭이 32비트 이상인 부호 있는 정수형을 나타냅니다.
그리고 마지막으로 7.18.1.3 가장 빠른 최소 폭 정수 유형, 단락 2:
typedef 이름
_t
N은 너비가 N 이상인 가장 빠른 부호 있는 정수 유형을 나타냅니다.typedef 이름_t
N은 너비가 N 이상인 가장 빠른 부호 없는 정수 유형을 나타냅니다.
이는 정수의 크기와 관련이 있으며 소리 그대로입니다.
int8_t is exactly 8 bits
int_least8_t is the smallest int type that has at least 8 bits
int_fast8_t is the fastest int type that has at least 8 bits.
언급URL : https://stackoverflow.com/questions/5254051/the-difference-of-int8-t-int-least8-t-and-int-fast8-t
'programing' 카테고리의 다른 글
C의 버퍼 플러시 (0) | 2022.08.30 |
---|---|
동적 MathJax를 Vuejs 2로 업데이트하시겠습니까? (0) | 2022.08.30 |
Vuejs 'beforeunload' 이벤트가 예상대로 트리거되지 않음 (0) | 2022.08.30 |
Vuetify를 사용하여 확인란 그룹을 확인하는 방법 (0) | 2022.08.29 |
테이블의 행을 URL에 링크 (0) | 2022.08.29 |