栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

测试代码

#include 

struct pack
{
 unsigned int a:2;  // 取值范围为:0~3
 unsigned int b:4;   // 取值范围为:0~15
 unsigned int c:6;   // 取值范围为:0~63
};

union u1  //u1表示联合体类型名
{
   //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, %dn", pk1.a, pk1.b, pk1.c);
 
 // 给pk2各成员赋值并打印输出
 pk2.a = 5;
 pk2.b = 20;
 pk2.c = 66;
 printf("%d, %d, %dn", 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 %dn",sum);
 printf("U2 mytest is %dn",mytest);  

 return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012358.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号