2012-11-18 2 views
2

무엇을 불러야할지 모르겠으므로 검색 방법을 모릅니다.이 C 구문은 무엇입니까?

unsigned int odd : 1;

편집 :

가 정교하게하려면,이 조각에서 유래 :

struct bitField { 
    unsigned int odd : 1; 
    unsigned int padding: 15; // to round out to 16 bits 
}; 

난이 비트를 포함 수집,하지만, 난 여전히 모든 방법을 이해하지 않다.

+1

요청하기 전에 사이트를 먼저 검색하고 더 나은 제목을 지정하십시오. 당신의 질문을 보면서 저는 오른쪽 열에 "관련있는"질문을 많이 가지고 있습니다. 그것은 뭔가를 찾기가 쉽다는 것을 보여줍니다. –

+0

가능한 복제본 '[부호가없는 임시 직원 : 3'은 무슨 뜻입니까?] (http://stackoverflow.com/questions/2950029/what-does-unsigned-temp3-mean) –

답변

7

이들은 비트 필드입니다. oddpaddingunsigned int (16 비트)에 저장되며 odd은 최하위 비트를 차지하고 paddingunsigned int의 상위 15 비트입니다.

+0

와우, 프로그래머가 구조체를 적절하게 지정 했습니까? 나는 가능성을 배제하고 * bitfield *라는 용어를 찾는 것에 별 신경을 쓰지 않았다. – Aerovistae

+1

@Aerovistae 실제로 이름은 "비트 필드"이지만 프로그래머는 구조체 이름에서 대시를 생략하지 않아도됩니다. –

0

그건 :의

  • 1 비트의 "홀수"(예를 들어, 1) '패딩'(예를 들어, 0000000000000001)
  • 와 (잠재적으로) 다른 비트가 unsigned int을 완성 최
  • 15 비트. 이것이 32 비트 인 현대의 32 비트 플랫폼에서는 메모리에 구조체가 아닌 16 개의 0을 보게됩니다. (이 경우 sizeof은 4를 반환합니다)

비트 필드는 메모리를 절약 할 수 있지만 잠재적으로 계산에 지침을 추가 할 수 있습니다. 어떤 경우에는 컴파일러가 비트 필드 설정을 무시할 수 있습니다. 컴파일러가 비트 필드를 실제로 레이아웃하는 방법에 대한 가정을 할 수 없으며 플랫폼의 엔디안에 따라 달라질 수 있습니다.

내가 bitfields를 사용하는 주된 이유는 내가 데이터 복사를 많이하고, 비트 필드의 특정 필드를 참조하거나 계산할 필요가 없다는 것입니다.

관련 문제