항상 C99, 섹션 6.5.3.4에서 하나입니다.
유형이 char, unsigned char 또는 signed char 인 피연산자 (또는 정규화 된 버전)에 적용하면 결과는 1입니다.
편집 : 질문의 일부가 아니라 Harbison and Steele, 3rd ed. (c99 이전) p. 148 :
저장 단위는 한 문자가 차지하는 저장 용량으로 간주됩니다. char
따라서 유형의 개체 크기는 1입니다.
편집 : 업데이트 된 질문에 대한 답변으로 Harbison과 Steele의 다음 질문과 답변이 적절합니다 (ibid, Ex. 4 of Ch. 6).
유형 char
이 -2,147,483,648에서 2,147,483,647까지의 값을 나타낼 수 있는 C 구현을 가질 수 있습니까? 그렇다면 sizeof(char)
그 구현 아래에 무엇이 있을까요? 유형의 최소 및 최대 범위는 무엇입니까?int
무엇입니까?
답변 (ibid, p. 382) :
구현시 32 비트를 사용하여 type을 나타내는 것이 허용됩니다 (낭비되는 경우) char
. 구현 여부에 관계없이
sizeof(char)
은 항상 1입니다.
이것은 바이트가 8 비트이고 그 char
중 4 바이트 인 경우를 구체적으로 다루지는 않지만 (실제로 c99 정의로는 불가능합니다. 아래 참조)sizeof(char) = 1
항상 c99 표준과 Harbison 및 Steele에서 분명합니다.
편집 : 사실 (이 당신의 UPD이 질문에 대한 응답이다), 지금까지의 C99에 관한 한 sizeof(char)
것입니다 다시 섹션 6.5.3.4에서 바이트 :
sizeof 연산자는 피연산자의 크기 (바이트)를 산출합니다.
따라서 위의 인용문과 결합하면 8 비트의 바이트와 char
4 바이트의 바이트는 불가능합니다. c99의 경우 바이트는 char
.
7 비트 가능성에 대한 귀하의 언급에 대한 답변 char
: 이것은 c99에서는 불가능합니다. 표준의 섹션 5.2.4.2.1에 따라 최소값 은 8입니다.
구현 정의 값은 같 거나 커야합니다. 은 동일한 부호를 사용하여 표시된 합니다.
— 비트 필드 (바이트)가 아닌 가장 작은 객체의 비트 수
**CHAR_BIT 8**
— 서명 된 문자 유형의 객체에 대한 최소값
**SCHAR_MIN -127//−(27−1)**
— signed char 유형의 객체에 대한 최대 값
**SCHAR_MAX +127//27−1**
— unsigned char 유형의 객체에 대한 최대 값
**UCHAR_MAX 255//28−1**
— char 유형의 객체에 대한 최소값
**CHAR_MIN** see below
— char 유형의 객체에 대한 최대 값
**CHAR_MAX** see below
[...]
char 형 객체의 값이 표현식에서 사용될 때 부호있는 정수로 취급된다면 CHAR_MIN의 값은 SCHAR_MIN의 값과 같아야하고 CHAR_MAX의 값은 SCHAR_MAX의 값과 같아야한다. 그렇지 않으면 CHAR_MIN의 값은 0이고 CHAR_MAX의 값은 UCHAR_MAX의 값과 동일합니다. UCHAR_MAX 값은 2 ^ CHAR_BIT − 1과 같아야합니다.