2013-11-22 3 views
0
class Test 
{ 

    struct 
    { 
     unsigned has_some_value1: 1; 
     unsigned has_some_value2: 1; 
    } info; 
}; 

Что означает unsigned has_some_value1: 1;?Что означает эта конструкция?

Настоящее утверждение должно быть справедливым: sizoef(type) == bit1 + ... + bitn?

+2

Это бит-поле. – dyp

+2

http://stackoverflow.com/questions/1604968/what-does-this-c-code-mean – svs

ответ

2

Они называются «битовыми полями». has_some_value1 занимает один бит. has_some_value2 также занимает один бит - возможно, следующий физический бит в памяти, или, может быть, нет (зависит от того, как ваш компилятор настроен на обработку выравнивания битового поля).

+0

sizeof(), очевидно, будет, как минимум, округлять размер до следующего целого числа * байтов * после сложение ширины бит и деление на 8. Но это может быть и больше из-за проблем с выравниванием структуры и компилятора. – jez

1

Битовое поле в нестатическом экземпляре неименованной структуры, называемой «информация», которая сама является членом «теста».

Смежные вопросы