资讯详情

c语言 寄存器技巧 (struct 和 union)

参考: C语言 | 位域的使用详解

测试代码

#include <stdio.h>  struct pack { 
         unsigned int a:2;  // 值范围为:0~3  unsigned int b:4;   // 值范围为:0~15  unsigned int c:6;   // 值范围为:0~63 };  union u1  //u表示联合体类型名 { 
           //unsigned int b;    struct pack f;    unsigned int b;  };  int main(void) { 
         struct pack pk1;  struct pack pk2;    // 给pk1.成员赋值,打印输出  pk1.a = 1;  pk1.b = 10;  pk1.c = 50;  printf("%d, %d, %d\n", pk1.a, pk1.b, pk1.c);    // 给pk2各成员赋值,打印输出  pk2.a = 5;  pk2.b = 20;  pk2.c = 66;  printf("%d, %d, %d\n", pk2.a, pk2.b, pk2.c);   printf("\n!!!\n");   union u1 mytest;   mytest
      
       .f
       .a
       =
       3
       ; mytest
       .f
       .b
       =
       15
       ; mytest
       .f
       .c
       =
       63
       ; mytest
       .b 
       = 
       3456
       ; 
       int sum 
       = 
       3 
       + 
       15
       *
       4 
       + 
       63 
       * 
       64
       ; 
       printf
       (
       "@@@@@@@ U2 mytest is %d\n"
       ,sum
       )
       ; 
       printf
       (
       "U2 mytest is %d\n"
       ,mytest
       )
       ; 
       return 
       0
       ; 
       } 
      

标签: pk1接近传感器sc1204

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台