Что делает 'неподписанный temp:3' в структуре или среднем объединении? [дубликат]

57
задан Community 23 May 2017 в 10:29
поделиться

4 ответа

Эта конструкция определяет длину в битах для каждого поля.

Преимущество этого заключается в том, что вы можете контролировать sizeof (op) , если будете осторожны. размер структуры будет суммой размеров полей внутри.

В вашем случае размер операции составляет 32 бита (то есть sizeof (op) равен 4).

Размер всегда округляется до следующего кратного 8 для каждой группы беззнаковых xxx: yy; построить.

Это означает:

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)

Я не уверен, что правильно это помню, но думаю, что правильно понял.

42
ответ дан 24 November 2019 в 19:44
поделиться

Модификатор двоеточия в целочисленных типах указывает, сколько битов должно занимать int.

4
ответ дан 24 November 2019 в 19:44
поделиться

Здесь объявляется битовое поле; число после двоеточия дает длину поля в битах (т.е. сколько бит используется для его представления).

19
ответ дан 24 November 2019 в 19:44
поделиться
unsigned op_type:9;

Означает, что op_type является целочисленной переменной с 9 битами.

6
ответ дан 24 November 2019 в 19:44
поделиться