简单的C语法问题

azp*_*are 1 c syntax

我在我正在考虑的C课程的旧考试中遇到了以下代码:

struct QuestionSet{
    char q1:1;
    char q2:1;
    char q3:1;
}
Run Code Online (Sandbox Code Playgroud)

我不知道语法"char q1:1"的含义是什么,而且我无法在"C程序设计语言"中找到它,这是课本.谁能解释一下?

cdh*_*wie 6

这是一个位域.冒号后面的数字表示要分配给struct元素的位数.因此这三个元素都是一位宽,并且能够存储两个值:0,并且1或-1(取决于您的编译器,但在考虑二进制补码算法时,-1将是更合理的选项).