How to create bit field in C

2 Answers

0 votes
#include <stdio.h>
 
struct S
{
    unsigned int bits : 3; // 0..7
};
 
int main(void)
{
    struct S s = {6};
    printf("%d\n", s.bits);
    
    s.bits++;
    printf("%d\n", s.bits);
    
    s.bits++; // overflow
    printf("%d\n", s.bits);
}



 
/*
run:
   
6
7
0
 
*/


 



answered Mar 11, 2024 by avibootz
0 votes
#include <stdio.h>
 
struct S
{
    // total 4 bytes: (32 bits)
    // a = 5 bits
    // unused = 11 bits
    // b = 6 bits
    // c = 2 bits
    unsigned a : 5, : 11, b : 7, c : 3;
};
 
int main(void)
{
    printf("%zu\n", sizeof(struct S)); 
    printf("%zu\n", sizeof(unsigned int)); 
}



 
/*
run:
   
4
4
 
*/

 



answered Mar 11, 2024 by avibootz
...