반응형
구조체 또는 공용체에서 'unsigned temp : 3'은 무엇을 의미합니까?
중복 가능성 :
이 C ++ 코드는 무엇을 의미합니까?
JNA를 사용하여 C 구조를 Java에 매핑하려고합니다. 본 적이없는 무언가를 발견했습니다.
struct
다음과 같이 정의는 다음과 같습니다
struct op
{
unsigned op_type:9; //---> what does this mean?
unsigned op_opt:1;
unsigned op_latefree:1;
unsigned op_latefreed:1;
unsigned op_attached:1;
unsigned op_spare:3;
U8 op_flags;
U8 op_private;
};
일부 변수가 다음과 같이 정의되는 것을 볼 수 있으며 unsigned op_attached:1
그 의미가 무엇인지 잘 모르겠습니다. 이 특정 변수에 할당 할 바이트 수에 영향을 미칠까요?
이 구조는 각 필드의 길이를 비트 단위로 지정합니다.
이것의 장점 sizeof(op)
은 조심하면를 제어 할 수 있다는 것 입니다. 구조의 크기는 내부 필드 크기의 합계가됩니다.
귀하의 경우 op의 크기는 32 비트 (즉, sizeof(op)
4)입니다.
크기는 항상 모든 unsigned xxx : yy 그룹에 대해 다음 8의 배수로 반올림됩니다. 구성.
그것의 의미는:
struct A
{
unsigned a: 4; // 4 bits
unsigned b: 4; // +4 bits, same group, (4+4 is rounded to 8 bits)
unsigned char c; // +8 bits
};
// sizeof(A) = 2 (16 bits)
struct B
{
unsigned a: 4; // 4 bits
unsigned b: 1; // +1 bit, same group, (4+1 is rounded to 8 bits)
unsigned char c; // +8 bits
unsigned d: 7; // + 7 bits
};
// sizeof(B) = 3 (4+1 rounded to 8 + 8 + 7 = 23, rounded to 24)
나는 이것을 올바르게 기억하고 있는지 잘 모르겠지만 나는 그것을 옳았다 고 생각한다.
비트 필드를 선언 합니다 . 콜론 뒤의 숫자는 필드의 길이를 비트 단위로 나타냅니다 (즉,이를 나타내는 데 사용되는 비트 수).
unsigned op_type:9;
op_type이 9 비트의 정수 변수임을 의미합니다.
정수 유형의 콜론 수정자는 int가 차지해야하는 비트 수를 지정합니다.
참조 URL : https://stackoverflow.com/questions/2950029/what-does-unsigned-temp3-in-a-struct-or-union-mean
반응형
'Nice programing' 카테고리의 다른 글
Python을 사용하여 사용자 입력 삭제 (0) | 2020.12.25 |
---|---|
파이썬에서 변수 유형을 주장하는 적절한 방법 (0) | 2020.12.25 |
MySQL의 BLACKHOLE Engine의 목적은 무엇입니까? (0) | 2020.12.25 |
[NSMutableArray array]와 [[NSMutableArray alloc] init]의 차이점 (0) | 2020.12.25 |
Ruby에서 메모리 누수의 원인 찾기 (0) | 2020.12.25 |