首页 > 其他分享 >关于联合和枚举

关于联合和枚举

时间:2024-09-17 11:25:11浏览次数:8  
标签:union int 枚举 un 关于 联合 类型 Un

1. 联合体类型的声明

像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所 以联合体也叫:共⽤体。

// 联合类型的声明

union Un

{

char c;

int i; }; 

2. 联合体的特点

联合的成员是共⽤同⼀块内存空间的,这样⼀个联合变量的⼤⼩,⾄少是最⼤成员的⼤⼩(因为联合 ⾄少得有能⼒保存最⼤的那个成员)。 

#include <stdio.h>
 //联合类型的声明
 
union Un
 {
 char c;
 int i;
 };
 int main()
 {
 //联合变量的定义
 
union Un un = {0}; // 下⾯输出的结果是⼀样的吗?
 
printf("%p\n", &(un.i));
 printf("%p\n", &(un.c));
 printf("%p\n", &un);
 return 0;
 }

 事实证明一模一样

union Un
{
int i;
char c;
};
int main()
{
union Un un = {0};
 un.i = 0x11223344;
 un.c = 0x55;
 printf("%x\n", un.i);
 return 0;
}

3. 联合体⼤⼩的计算

联合的⼤⼩⾄少是最⼤成员的⼤⼩。

 当最⼤成员⼤⼩不是最⼤对⻬数的整数倍的时候,就要对⻬到最⼤对⻬数的整数倍。 

4. 枚举类型的声明

枚举顾名思义就是⼀⼀列举。 把可能的取值⼀⼀列举。 

enum Sex// 性别

{

MALE,

FEMALE,

SECRET } ; 

{}中的内容是枚举类型的可能取值,也叫 枚举常量。 这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值。

enum Color// 颜⾊

{

RED=2,

GREEN=4,

BLUE=8

};

5. 枚举类型的优点

枚举的优点:

1. 增加代码的可读性和可维护性

2. 和#define定义的标识符⽐较枚举有类型检查,更加严谨。

3. 便于调试,预处理阶段会删除 #define 定义的符号

4. 使⽤⽅便,⼀次可以定义多个常量

5. 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤ 

6. 枚举类型的使⽤

 enum Color//颜⾊
{
 
 RED=1,
 GREEN=2,
 BLUE=4
};
 enum Color clr = GREEN;//使⽤枚举常量给枚举变量赋值
 

那是否可以拿整数给枚举变量赋值呢?在C语⾔中是可以的,但是在C++是不⾏的,C++的类型检查⽐ 较严格。 

标签:union,int,枚举,un,关于,联合,类型,Un
From: https://blog.csdn.net/2402_86688931/article/details/142311671

相关文章

  • 教育部等十八部门关于加强新时代中小学科学教育工作的意见 20240917_085127
    原文教育部等十八部门关于加强新时代中小学科学教育工作的意见_国务院部门文件_中国政府网https://www.gov.cn/zhengce/zhengceku/202305/content_6883615.htm概述教育部等十八部门联合发布此意见,强调要加强科学教育,推动校内校外融合,规范科技类校外培训。这一政策为少儿编程教......
  • 关于IP地址、子网掩码、主机地址和网络地址的关系的详细例子
    前言:大家好很高兴我们又见面了,那么在这一篇博客中我将简单论述IP地址、子网掩码、主机地主和网络地址的关系.以及如何进行转换,方便大家理解与记忆.        :)关于IP地址、子网掩码、主机地主和网络地址的关系:####基本概念* **IP地址**:由32位(4个字节)组成,......
  • 关于Spring Boot+MySQL的房地产销售管理系统
    ​博客主页:   曾几何时…项目背景时代的进步使人们的生活实现了部分自动化,由最初的全手动办公已转向手动+自动相结合的方式。比如各种办公系统、智能电子电器的出现,都为人们生活的享受提供帮助。采用新型的自动化方式可以减少手动的办公时间,增加正确率从而增加人们......
  • Java基础学习(七)(枚举和注解)
    一、枚举枚举是一组常量的集合。枚举属于一种特殊的类,里面只包含一组有限的特定的对象。有两种实现方式:①自定义类实现枚举  ②使用enum关键字实现枚举1.1自定义类实现枚举不需要提供set方法,因为枚举对象值通常为只读对枚举对象/属性使用final+static共同修饰,实现底......
  • C++入门基础知识71(高级)——【关于C++ 模板】
    成长路上不孤单......
  • 关于数据在内存中如何存储
    1.整数在内存中的存储在讲解操作符的时候,我们就讲过了下⾯的内容:整数的2进制表⽰⽅法有三种,即原码、反码和补码有符号的整数,三种表⽰⽅法均有符号位和数值位两部分,符号位都是⽤0表⽰“正”,⽤1表⽰“负”,最⾼位的⼀位是被当做符号位,剩余的都是数值位。 正整数的原、反、......
  • 关于码元 带宽 传输速率 奈奎斯特定理的理解
    首先是码元,码元代表的是固定时长的信号波形表示一位k进制数字,尤其注意可以是半个周期,也可以是数个周期,只需要注意是在固定时长就行,不与频率有直接关系,只要在带宽频率所显示的范围内并且可以被准确检测到数据就行。带宽,带宽应为能收到的最快频率和最慢频率的差值,单位为HZ。传输速......
  • 语言的枚举
    不同语言的枚举C/C++枚举本质是整型,在Java中是对象,而非基本类型,可通过instanceofObject判断是否是对象类型。C#与Java不同,枚举是值类型。C语言更纯粹,枚举绝对当成整数,可以对枚举变量用整数赋值,甚至可以做自增运算。C++做了一定约束,可以将枚举变量赋值给整数,但不能反过来,另外......
  • 关于API淘宝数据接口
    在当今数字化商业时代,淘宝作为全球领先的电商平台,提供了丰富的API接口,使开发者能够高效地获取和管理电商数据。淘宝API接口不仅简化了与淘宝平台的交互,还为商家提供了强大的数据支持,帮助他们更好地分析市场趋势、优化店铺运营、提升用户体验。淘宝API接口概述淘宝API接口是一组......
  • 【USB3.0协议学习】Topic4·USB3.0的Port Connect State Machine和设备枚举
    上一节的文章【USB3.0协议学习】Topic2·USB3.0的LTSSM分析中我们详细分析了USB3.0协议中的链路训练状态机(LTSSM)的各状态和跳转条件,覆盖了所有LTSSM状态。本文我们将从Roothubport和DevicePort的角度讨论其PortConnect状态机。该状态机相比LTSSM,是更高层次的状态机,取决于具体......