RicardasSim

C Bit Fields

Mar 10th, 2019
681
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.95 KB | None | 0 0
  1. /*
  2. -std=c99 -Wall -Wextra -Wpedantic -Wshadow
  3. */
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <stdbool.h>
  8. #include <string.h>
  9.  
  10. struct status{
  11.     unsigned int sv1:1;
  12.     unsigned int sv2:1;
  13.     unsigned int sv3:1;
  14.     unsigned int sv4:1;
  15.     unsigned int sv5:1;
  16.     unsigned int sv6:1;
  17.     unsigned int sv7:1;
  18.     unsigned int sv8:1;
  19.     unsigned int sv9:1;
  20.     unsigned int sv10:1;
  21.     unsigned int sv11:1;
  22.     unsigned int sv12:1;
  23.     unsigned int sv13:1;
  24.     unsigned int sv14:1;
  25.     unsigned int sv15:1;
  26.     unsigned int sv16:1;
  27.     unsigned int sv17:1;
  28.     unsigned int sv18:1;
  29.     unsigned int sv19:1;
  30.     unsigned int sv20:1;
  31.     unsigned int sv21:1;
  32.     unsigned int sv22:1;
  33.     unsigned int sv23:1;
  34.     unsigned int sv24:1;
  35.     unsigned int sv25:1;
  36.     unsigned int sv26:1;
  37.     unsigned int sv27:1;
  38.     unsigned int sv28:1;
  39.     unsigned int sv29:1;
  40.     unsigned int sv30:1;
  41.     unsigned int sv31:1;
  42.     unsigned int sv32:1;
  43. };
  44.  
  45. struct tst {
  46.   unsigned int v1:22;
  47.   unsigned int v2:14;
  48.   unsigned int v3:9;
  49.   unsigned int v4:3;
  50. };
  51.  
  52. int main (int argc, char **argv){
  53.  
  54.     struct status Stat;
  55.     struct tst sTst;
  56.    
  57.     memset(&Stat,0,sizeof(Stat));
  58.    
  59.     Stat.sv1 = true;
  60.     Stat.sv2 = false;
  61.    
  62.     printf("sizeof Stat: %zu\n", sizeof(Stat));
  63.     printf("sizeof sTst: %zu\n", sizeof(sTst));
  64.     printf("sizeof int: %zu\n", sizeof(int));
  65.    
  66.     printf("sv1: ");
  67.     if(Stat.sv1) printf("true");
  68.     else printf("false");
  69.     printf("\nsv2: ");
  70.     if(Stat.sv2) printf("true");
  71.     else printf("false");
  72.     printf("\n");
  73.    
  74.     sTst.v1 = 123;
  75.     sTst.v2 = 555;
  76.     sTst.v3 = 15;
  77.     sTst.v4 = 7;
  78.    
  79.     printf("v1: %d\n",sTst.v1);
  80.     printf("v2: %d\n",sTst.v2);
  81.     printf("v3: %d\n",sTst.v3);
  82.     printf("v4: %d\n",sTst.v4);
  83.    
  84.    
  85.    
  86. return 0;
  87. }
  88.  
  89. /*
  90.  
  91. output:
  92.  
  93. sizeof Stat: 4
  94. sizeof sTst: 8
  95. sizeof int: 4
  96. sv1: true
  97. sv2: false
  98. v1: 123
  99. v2: 555
  100. v3: 15
  101. v4: 7
  102.  
  103. */
Advertisement
Add Comment
Please, Sign In to add comment