当前位置: 首页 > article >正文

C语言结构体struct、联合体union和位域操作共同使用示例

在 C 语言中,结构体(struct)、联合体(union)和位域(bit-field)可以共同使用,以实现更复杂的数据组织和内存管理。下面是一个示例程序,展示了如何将它们结合起来使用。

#include "stdio.h"
#include "stdlib.h"
#include "stdint.h"

typedef union {
    uint8_t value;
    struct {
        uint8_t bit0 : 1;   //最低位,以下顺序不能错
        uint8_t bit1 : 1;
        uint8_t bit2 : 1;
        uint8_t bit3 : 1;
        uint8_t bit4 : 1;
        uint8_t bit5 : 1;
        uint8_t bit6 : 1;
        uint8_t bit7 : 1;   //最高位
    }bits;
}gpio;

int main(void)
{
    gpio a;
    a.value = 0x5C;
    
    printf("%d %d %d %d %d %d %d %d \r\n", 
                            a.bits.bit7, 
                            a.bits.bit6, 
                            a.bits.bit5, 
                            a.bits.bit4, 
                            a.bits.bit3, 
                            a.bits.bit2, 
                            a.bits.bit1, 
                            a.bits.bit0);   //0 1 0 1 1 1 0 0
    a.bits.bit0 = 1;
    a.bits.bit1 = 1;
    printf("a=%02x\r\n", a.value);  //a=5f
    system("pause");
    
    return 0;
}

http://www.kler.cn/a/552487.html

相关文章:

  • 你对 CSS 预编译语言的理解是什么,有哪些区别?
  • 【强化学习的数学原理】第09课-策略梯度方法-笔记
  • 【进阶】微服务
  • Docker容器化 | 超简单部署 FireCrawl
  • iOS 上自定义编译 FFmpeg
  • Redis的简单使用
  • cs*n 网页内容转为html 加入 onenote
  • 抖音IP属地显示:准确性与关闭方法全解析
  • 新能源汽车充电桩运营模式,开启绿色出行新篇
  • 【基础架构篇十二】《DeepSeek多租户架构:企业级SaaS服务设计》
  • Jtti:centos主机如何搭建lnmp环境
  • 机器学习基础(第3个月):监督学习、无监督学习、模型评估指标(准确率、召回率等)
  • 【第4章:循环神经网络(RNN)与长短时记忆网络(LSTM)— 4.4 文本分类与情感分析】
  • linux redis ipv6、ipv4 只接收本地访问、接收本地和远程访问
  • 第二十四章 R 开头的术语
  • x86平台基于Qt+opengl优化ffmpeg软解码1080P视频渲染效率
  • idea无法联网,离线安装插件
  • Go 自动升级依赖版本
  • 【设计模式】【结构型模式】享元模式(Flyweight)
  • Docker容器中如何识别Linux系统并安装软件?新手避坑指南