Что значит int i:3 в присваивании переменных?

Я пытаюсь понять следующий код в C:

struct values{
  int i:3;
  int j:3;
  int k:2;
};

int main(){
    struct values v = {-6,2,5};
    printf("%d %d %d", v.i,v.j,v.k);
}

Этот код производит следующий вывод:

2 2 1

Я пытаюсь понять, что значит назначение для int значения, используемые внутри структуры, т.е. int i:3?

Я знаю, что : это не оператор. Так что же это делает? Кроме того, кто-то может объяснить, как этот результат достигается?

Спасибо большое!

1 ответ

Решение

Числа указывают длину в битах для каждого поля.

следовательно i а также j представлены в 3 битах в то время как k в 2 бита.

Кстати, этот вопрос явно дублирует этот вопрос, и есть очень хороший ответ, который я предлагаю вам прочитать.

Другие вопросы по тегам