문제

C ++의 단어 길이, 문자 크기, 정수 크기 및 바이트의 관계는 무엇입니까?

도움이 되었습니까?

해결책

표준에는 특정 유형이 필요합니다 최저한의 크기 (짧은 비트 이상, int는 16 비트 이상)이며 일부 유형 그룹이 주문됩니다 (sizeof(int) >= sizeof(short) >= sizeof(char)).

다른 팁

C ++에서 숯은 구현의 기본 문자 세트에서 어떤 캐릭터 임의의 문자를 보유 할 수있을 정도로 커야합니다.

int "실행 환경의 아키텍처에 의해 제안 된 자연 크기"가 있습니다. 이것은 int가하는 것을 의미합니다 ~ 아니다 크기가 32 비트 이상이어야합니다. 어디에서 구현 int 16 비트가 일반적입니다 (MS-DOS를 생각해보십시오).

다음은 C ++ 98 및 C99 표준의 다양한 부분에서 가져옵니다.

  • long int 적어도 크게 커야합니다 int
  • int 적어도 크게 커야합니다 short
  • short 적어도 크게 커야합니다 char

그것들은 모두 같은 크기 일 수 있습니다.

또한 (2의 보완 구현을 가정) :

  • long int 32 비트 이상이어야합니다
  • int 16 비트 이상이어야합니다
  • short 16 비트 이상이어야합니다
  • char 최소 8 비트 여야합니다

표준은 프로세서가 사용하는이 "단어"를 알지 못합니다. 그러나 "int"유형은 실행 환경의 자연 크기를 가져야한다고 말합니다. 그러나 64 비트 환경에서도 INT는 일반적으로 32 비트에 불과합니다. 따라서 표준 용어로 "단어"는 공통된 의미가 없습니다 (물론 일반적인 영어 "단어"제외).

캐릭터 크기는 캐릭터의 크기입니다. 당신이 말하는 캐릭터에 따라 다릅니다. 문자 유형은 문자, 부호없는 숯 및 서명 된 숯입니다. 또한 WCHAR_T는 크기를 가질 수있는 문자를 저장하는 데 사용됩니다 (구현에 따라 결정하지만 정수 유형 중 하나를 기본 유형으로 사용해야합니다. 열거 형 char 또는 부호없는 숯은 하나의 바이트가 있어야합니다. 그것은 하나의 바이트가 하나의 숯만큼 비트를 많이 가지고 있음을 의미합니다. 구현에 유형 Char의 하나의 객체에 16 비트가 있다고 말하면 바이트는 16 비트도 있습니다.

이제 바이트는 하나의 문자가 차지하는 크기입니다. 특정 유형이 아닌 단위입니다. 그것에 대해 더 이상없고, 메모리에 액세스 할 수있는 단위라는 것입니다. 즉, 비트 필드에 대한 포인터 액세스가 없지만 One Byte에서 시작하는 장치에 액세스 할 수 있습니다.

"정수 크기"는 이제 꽤 넓습니다. 무슨 뜻이에요? Bool, Char, Short, Int, Long 및 해치되지 않은 모든 상대방은 정수입니다. 그들의 범위는 내가 "정수 크기"라고 부르는 것이며 C 표준에 문서화되어 있습니다. C ++ 표준에 의해 인수됩니다. 서명 된 char의 경우 범위는 -127 <-> 127이고, 짧고 int는 동일하고 -2^15+1 <-> 2^15-1이고 오랫동안 -2^31+1 <입니다. -> 2^31-1. 서명되지 않은 상대방은 각각 0에서 2^8-1, 2^16-1 및 2^32-1입니다. 그러나 그것들은 최소 크기입니다. 즉, int는 모든 플랫폼에서 최대 크기 2^14를 가질 수 있습니다. 물론 2^15-1 미만이기 때문입니다. 최소의 비트가 필요한 값에 따릅니다. char의 경우, 8의 경우, 짧은/int의 경우 16의 경우 32입니다. 음수에 대한 2 개의 보수 표현이 필요하지 않으므로 음수 값이 아닌 이유입니다. -128 대신에 -127 예를 들어 서명 된 char.

표준 C ++에는 데이터 유형이 호출되지 않습니다 word 또는 byte. 나머지는 범위로 잘 정의되어 있습니다. 베이스는 a char 어느 것입니다 CHAR_BITS 비트. Char_bits의 가장 일반적으로 사용되는 값은 8입니다.

sizeof (char) == 1 (1 바이트) (c ++, c- 지정되지 않음)
크기 (int)> = sizeof (char)
Word -C ++ 유형이 아님, 컴퓨터 아키텍처에서 평소 2 바이트를 의미합니다.

종류는 관계가 의미하는 바에 달려 있습니다. 숫자 유형의 크기는 일반적으로 기계 단어 크기의 배수입니다. 바이트는 바이트는 바이트입니다. 8 비트, 더 이상, 그 이상은 없습니다. 캐릭터는 표준에서 내가 믿는 단일 부호없는 바이트로 정의됩니다 (자세한 내용은 팔을 확인하십시오).

일반적인 규칙은 실제 데이터 유형의 실제 크기에 대한 가정을하지 않는 것입니다. 표준은 "긴"정수와 같은 유형 간의 관계를 지정하는 것은 "int"와 동일하거나 크기가 동일합니다. 언어의 개별 구현은 편리한 유형의 특정 크기를 선택합니다. 예를 들어, 64 비트 프로세서의 컴파일러는 32 비트 프로세서의 컴파일러와 다른 크기를 선택합니다.

Sizeof () 연산자를 사용하여 사용중인 컴파일러의 특정 크기를 검사 할 수 있습니다 (특정 대상 아키텍처).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top