source

uint8_t는 언제 부호 없는 문자입니까?

gigabyte 2022. 8. 27. 10:07
반응형

uint8_t는 언제 부호 없는 문자입니까?

와 C에 C++는CHAR_BIT >= 8.
★★★★★★★★★★★★★★★★★★★★.CHAR_BIT > 8,uint8_t8시 정각
커야 , 더 it it it, it it it it it it itCHAR_BIT는 시스템상의 모든 데이터 유형의 최소 비트 수입니다.

으로 「」를 할 수 있습니까?uint8_t 이외의 것으로 unsigned char무슨 일입니까?

(C와 C++의 답이 다를 경우 둘 다 알고 싶습니다.)

존재한다면,uint8_t은 항상 이어야 합니다.unsigned char하다, 하다, 하다, 같같같 같필다다 같없다만하다 이 문구는 '하다'와 같은 을 할 는 없습니다.unsigned char예를 들어, 비트는 반대 순서로 해석할 수 있습니다.은 우스운 예이지만, 은 「일상」의 에 더 의미가 있습니다.int8_t서, snowledge.signed char 부호 일 수도 .int8_t2년 전

하나의 은 ' 확장 을 ' 「 정수형」입니다.uint8_t"일반" 시스템에서도 C의 에일리어스 규칙입니다.문자 할 수 를 모두 타입에 대한 를 대폭 최적화할 수 단, 문자 타입은 에일리어스 할 수 없습니다.이것에 의해, 컴파일러는, 문자 포인터와 다른 타입에의 포인터를 모두 사용하는 함수를 고도로 최적화하는 것을 막을 수 있습니다.단,restrict이치노 ,이 있어도uint8_t와 정확히 같은 크기와 표현력을 가지고 있다.unsigned char는 타입의 할 수 uint8_t ★★★★★★★★★★★★★★★★★」int을 사용하다

으로 「」를 할 수 있습니까?uint8_t 이외의 것으로 unsigned char

「」입니다.uint8_t할 수 것은, 「」가 있는 시스템 입니다.CHAR_BIT8입니다. 정확히 8개의 값 비트가 있고 패딩 비트가 없는 주소 지정 가능한 단위입니다.

것은, 「」입니다.CHAR_BIT, 한 최소 단위의 .또, 「 」 、 「 」 、 「 」 、 「 」uint8_t패딩 비트는 사용할 수 없습니다.주소 지정 가능한 최소 유닛의 폭이 정확히8비트일 경우에만 존재할 수 있습니다.의 제공CHAR_BIT 8면 되다.uint8_t는 패딩 비트가 없는 임의의8비트 부호 없는 정수 타입의 타입 정의에 의해 정의할 수 있습니다.


C11 표준 초안(n1570.pdf)에는 다음과 같이 기재되어 있습니다.

5.2.4.2.1 정수형 1 아래 값은 #전처리지시서에 사용하기에 적합한 상수식으로 대체해야 한다. ...구현 정의 값은 같은 부호로 표시된 값과 크기(절대값) 이상이어야 합니다.

-- number of bits for smallest object that is not a bit-field (byte)
   CHAR_BIT                                            8

따라서 최소 개체는 정확히 CHAR_B를 포함해야 합니다.IT 비트가 있습니다.


6.5.3.4 연산자 및 _Alignof 연산자 크기

...

4 char, unsigned char 또는 signed char 또는 signed char를 가진 오퍼랜드(또는 그 수식 버전)에 sizeof를 적용하면 결과는 1이 됩니다.

따라서 이러한 유닛은 (일부) 주소 지정 가능한 최소 단위입니다.물론. 뻔하지.int8_t그리고.uint8_t또한 존재하는 한 주소 지정 가능한 최소 단위로 간주할 수 있습니다.

7.20.1.1 정확한 폭의 정수형

1 typedef name intN_t는 너비 N, 패딩 비트 없음 및 2의 보완 표현을 가진 부호 있는 정수 유형을 지정합니다.따라서 int8_t는 정확히 8비트의 폭을 갖는 부호 있는 정수형을 나타냅니다.

2 typedef name uintN_t는 너비가 N이고 패딩 비트가 없는 부호 없는 정수 유형을 지정합니다.따라서 uint24_t는 정확히 24비트의 폭을 갖는 부호 없는 정수형을 나타냅니다.

3 이러한 타입은 옵션입니다.단, 구현이 너비가 8, 16, 32 또는 64비트이고 패딩 비트가 없으며 (서명된 형식에 대해) 2의 보완 표현을 가진 정수 형식을 제공할 경우 대응하는 형식 이름을 정의해야 한다.

"이러한 유형은 선택 사항입니다"라고 강조하는 것은 저의 것입니다.이것이 도움이 되었기를 바랍니다:)

지금까지 아무도 언급하지 않은 가능성:CHAR_BIT==8자격 미달성char일부 ABI에 있는 서명되지 않았습니다.uint8_t에 대한 형식일 수 있다charunsigned char및 그 사악한 망글링)에 영향을 한, 즉, 모두를 경우 foo(char) ★★★★★★★★★★★★★★★★★」foo(unsigned char) 내, 콜, " ", "foo 「 「」의 uint8_t would prefer prefer prefer 를 선호하다foo(char)그런 시스템으로요.

언급URL : https://stackoverflow.com/questions/16138237/when-is-uint8-t-%e2%89%a0-unsigned-char

반응형