enum枚举/union共用体

//联合体——共用体
// 所有成员共用同一块空间(地址)
// 共用体占用的内存至少是最大成员的大小,单位 -字节
// 同一时刻只能用一个成员
// 当最大成员不是最大对齐数的整数倍,就要对齐到最大对齐数的整数倍
//

union un
{
    char c;
    int i;
};
union U
{
    char arr[5];//元素类型是char 对齐数是1 默认对齐数是8  则arr的对齐数是1
    int i;//对齐数是4 单位是字节
};

int check_sys()
{
    union //匿名创建
    {
        char c;
        int i;
    }u;
    u.i = 1;
    return u.c;
    //返回0是大端 返回1是小端 
}
int main()
{
    int ret = check_sys();
    if (1 == ret)
    {
        printf("当前是小端存储\n");
    }
    else
        printf("当前是大端存储\n");
    union U u;
    printf("%zd\n", sizeof(u));
    int a = 1;
    if (1 == *(char*)&a)
    {
        printf("当前是小端存储\n");
    }
    else
        printf("当前是大端存储\n");
    union un u;
    printf("%zd\n", sizeof(u));
    printf("%p\n", &u.c);
    printf("%p\n", &u.i);//地址相同
    printf("%p\n", &u);
    return 0;
}
//枚举类型
//1,增加了代码的可读性和可维护性
//2,和#define定义的标识符比较,枚举有类型检查,更加严谨
//3,防止了命名污染(封装)
//4,便于调试
//5,使用方便,一次可定义多个常量
//
enum sex
{
    //枚举的可能取值 --枚举常量
    male =1,
    femall,
    secret//元素用逗号隔开
};//分号结尾

enum color
{
    red,
    green,
    blue
};

int main()
{
    enum sex s = male;
    enum color c = blue;
    printf("%zd\n", sizeof(s));//大小 4个字节 由编译器指定整型大小
    printf("%d %d %d\n", male, femall, secret);//1 2 3
    printf("%d %d %d\n", red, green, blue);//0 1 2
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【jenkins】idea+jenkins+docker+dockerfile+compose流水线部署java应用

目录 整体架构 环境准备 安装docker以及docker-compose jenkins安裝 maven安装 portainer面板安装 sonarqube安装 在项目中增加dockerfile和compose.yml脚本 Dockerfile脚本内容 compose.yml脚本内容 jenkins安装必要插件 jenkins增加流水线任务 增加pipeline任务j…

iptables 防火墙

防火墙:隔离功能 部署在网络边缘或者主机边缘,在工作中,防火墙的主要作用,决定哪些数据可以被外网使用,以及哪些数据可以进入内网访问 主要工作在网络层 安全技术 1.入侵检测系统:检测出威胁&#xff0…

RISCV -3 RV32I/RV64I基本整型指令集

RISCV -3 RV32I/RV64I基本整型指令集 1 RV32I Base Integer Instruction Set1.1 Programmers’ Model for Base Integer ISA1.2 Base Instruction Formats1.3 Immediate Encoding Variants1.4 Integer Computational Instructions1.4.1 Integer Register-Immediate Instruction…

Java的集合类:List、Set、Map

在 Java 中,集合类是一组有序或无序的数据元素的集合。Java 集合类可用于存储和操作各种数据类型的元素,如整数、字符串、对象等。集合类是动态的,可以在运行时根据需要调整其大小。 Java 集合类可以分为三类: List - 有序集合&…

前端常用UI框架

前言: 作为一个前端码农,不仅要熟练使用原生技术,现在更需要掌握的是技术框架和ui框架,因为框架可以帮助我们快速的开发项目,并且能够保证界面的兼容和美观,下面是一些常用的前端ui框架,供大家参…

Windows 2012 R2 编辑ini文本遇到的编码问题

在编辑服务端配置文件时,发现对于ini文本文件: 需注意点一:如果另存为UTF-8保存的实际上格式是UTF-8-BOM编码格式; 但是两种格式是存在差异的: 因此造成在使用C#调用系统DLL读取文件时并未报错,但是当使用…

ChatGPT是否能够进行对话历史的回顾和追踪?

ChatGPT是一种强大的预训练语言模型,具有丰富的语言理解和生成能力。在情感识别和情感生成方面,ChatGPT可以发挥重要作用。 1. **情感识别**: 情感识别是指通过对文本进行分析和理解,确定文本所表达的情感类别,如喜欢…

[德语学习]冠词、代词

定冠词 格阳性 m阴性 f中性 n复数 Pl.第一格 Nderdiedasdie第二格 G第三格 Ddemderdemden第四格 Adendiedasdie 不定冠词 格阳性 m阴性 f中性 n复数 Pl.第一格 Neineineein-第二格 G-第三格 Deinemeinereinem-第四格 Aeineneineein- 人称代词 单数 格我你他/她/它尊称第一…

MySQL 数据库约束

目录 一、数据库约束 1、约束类型 二、NULL 约束 三、unique 约束 四、default 约束 五、primary key 约束 自增主键 六、foreign key 外键约束 七、check 约束 一、数据库约束 我们使用数据库来存储数据,一般是希望这里存储的数据是靠谱的,…

浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解

IOC 和 DI IOC 控制反转Bean的创建@Component的三个衍生注解Bean作用范围Bean创建时机Bean获取3中常见报错及解决方案DI 依赖注入@Autowired注解两个常见问题多个实现类---2种解决方案关于报错排查步骤管理第三方Bean@Bean 注解配置类优化Spring整合Mybatis整合思想整合实现持久…

【梦辛工作室】IF判断优化、责任链模式 IfChain

大家好哇,我是梦辛工作室的灵,在最近的开发中,有许多需要判断的分支处理,且处理内容较多且复杂,代码就容易越写越复杂,导致后期无法继续更新跌打,然后基于这个环境,我用责任链模式写…

Stable Diffusion在各种显卡上的加速方式测试,最高可以提速211.2%

Stable Diffusion是一种基于扩散模型的图像生成技术,能够从文本生成高质量的图像,适用于CG,插图和高分辨率壁纸等领域。 但是它计算过程复杂,使得它的生成速度较慢。所以研究人员就创造了各种提高其速度的方式,比如Xf…

计算机视觉(二)图像特征提取

文章目录 颜色特征量化颜色直方图适用颜色空间:RGB、HSV等颜色空间操作 几何特征边缘 Edge边缘定义边缘提取 基于关键点的特征描述子引入几何特征:关键点几何特征:Harris角点FAST角点检测几何特征:斑点局部特征:SIFT预…

JavaScript 事件监听

语法:元素对象.addEventListener("事件类型",要执行的函数) 事件监听三要素: 事件源:哪个dom元素被触发了,要获取dom元素事件类型:用什么方式触发,eg:鼠标单击click、鼠标经过mouseover登事件调…

基于WebSocket实现的后台服务

基于WebSocket实现的后台服务,用于接收客户端的心跳消息,并根据心跳消息来维护客户端连接。 具体实现中,服务启动后会创建一个HttpListener对象,用于监听客户端的WebSocket连接请求。当客户端连接成功后,服务会为每个…

Linux环境PostgreSQL安装

今日一语:鲲鹏扶摇而直上九万里,雄鹰展翅高飞,这是因为鲲鹏一出世就得历劫,老鹰刚长出翅膀就会被扔下悬崖 下载安装包,解压到服务器中,然后 make && make install # 登录使用 ./psql # 切换数据库…

maven 离线模式打包

遇到问题 由于客户对于安全性的要求比较高 又想要自己打包,但不允许使用外网,这样就出现了没办法在线打包,需要离线打包。其实也很简单,只需要三步。 第一步 将项目中用到的依赖,下载到本地仓库中,然后将…

idea中Easy Code模版配置

首先找到模版位置 找到使用的模版,我用的是MybatisPlus-H,这是我新建的一个模版 controller.java.vm模版 ##导入宏定义 $!{define.vm}##设置表后缀(宏定义) #setTableSuffix("Controller")##保存文件(宏定义&#xff…

qemu搭建arm环境以及文件共享

几乎完全参照该文章 使用QEMU搭建ARM64实验环境 - 简书 ubuntu 14.04,linux3.16, busybox-1.31.0 arm-linux-gnueabi-gcc -v linux3.16以及busybox下载安装可参考链接 Ubuntu14.04安装qemu,运行linux-3.16gdb调试_qemu 安装 ubuntu 14_这个我…

Kamailio常用命令

kamctl --help:显示kamctl命令的帮助信息。 kamctl ps:列出当前的Kamailio进程列表。 kamctl stats:显示Kamailio的统计信息。 kamctl uptime:显示Kamailio的运行时间。 kamctl moni:启动Kamailio的监控模式。 ka…