美文网首页想法简友广场C++学习笔记
第四章 复合类型(5)共用体与枚举

第四章 复合类型(5)共用体与枚举

作者: 阿厉a_li | 来源:发表于2019-12-03 14:03 被阅读0次

(五)共用体与枚举

1.共用体(union)

    共用体是一种数据格式,它能够存储不同的数据类型,但在同一时刻只能存储其中的一种类型。声明与结构类似,关键字是union。由于共用体每次只能存储一个值,因此它必须有足够的空间来存储最大的成员,所以,共用体的长度为其最大成员的长度。

    共用体使用起来和结构也是类似的,比如union a{int a1;double a2;};声明了一个共用体类型,a example;声明了一个共用体example,example.a1=3;此时example.a1就是一个int类型,而example.a2是没有意义的。example.a2=3.44;来赋值,此时example.a1是没有意义的,可以说共用体内的成员在同一时间只有一个是有意义的,这也是共用的含义之所在。

    可以声明匿名共用体,也就是共用体没有名称,通常类型名称也没有,比如union {int a1;double a2};(通常是在结构内声明的),这样共用体的成员被看成是结构体的成员,它们的地址相同(也就是a1和a2可以看成是结构体的成员,而他们只能一次使用一个)。而因为是共用体,因此共用体的成员只可在同一时间使用一个。

   共用体常用于节省内存,这在某些嵌入式编程中是非常有利的。

2.枚举

(1)枚举是什么

    枚举是只能赋值给它特定值的一种自定义的数据类型,是另一种创建符号常量的方式,命令符号是enum,定义和结构,共用体相似,创建举例:enum spectrum {red,blue,yellow,violet,green}。这样创建的枚举类型spectrum,只能有大括号里面的那些取值,red,blue等成为了符号常量,叫作枚举量,对应着0-4五个值,可以显式地用指定值来覆盖默认值。定义了枚举类型之后,就可以使用枚举类型来创建枚举变量,比如spectrum aa,就创建了一个枚举变量aa。

(2)给枚举变量赋值的时候,只能赋值给他定义时定义的那些值。

    对于枚举,只定义了赋值运算符,枚举并没有专用的运算符,但是如果我们用运算符来计算它也是可以的,此时枚举值被自动转换成了int类型。但是int类型赋值给枚举类型就会出现错误,比如上面的aa=red;是可以的,red+blue也是有效的表达式,但是aa=red+blue是不允许的,因为不能将int类型赋值给枚举类型。

    如果int值是有效的,则可以通过强制类型转换,将它赋给枚举变量:比如

band = spectrum (3) ;       //typecast 3 to type spectrum

(3)如果打算只使用常量,而不创建枚举类型的变量,则可以省略枚举类型的名称

    如下面的例子所示:

    enum { red, orange, yellow , green, blue , violet , indigo, ultraviolet };此时red实际为0,indigo实际为6。

    实际上,枚举更常用来定义相关的符号常量而不是新类型,比如可以用枚举来定义swich语句中使用的符号常量。

(4)设置枚举量的值

    可以使用赋值运算符显式地设置枚举量的值

    enum bits{one = 1, two = 2, four = 4, eight = 8};也可以只显式地设置一部分的值,那么后面未设置值的量的值将比前面的值依次加一。如果需要的话,也可以创建值相同的枚举量。

相关文章

  • 第四章 复合类型(5)共用体与枚举

    (五)共用体与枚举 1.共用体(union) 共用体是一种数据格式,它能够存储不同的数据类型,但在同一时刻只能存...

  • C语言基础 之 复合数据类型和类型定义

    复合类型是一种自定义类型,用于扩展基本数据类型。复合数据类型包括:结构类型、共用体类型和枚举类型。 用 typed...

  • 郝斌C语言笔记 -- 预备知识

    预备知识 1.数据类型 1.基本数据类型 2.复合数据类型 结构体 枚举 共用体 2.变量 1.什么是变量 变量的...

  • C语言基础 之 共用体类型

    共用体类型 共用体类型的说明和变量定义 共用体类型又称“联合类型”,简称共用体。共用体类型的说明和变量的定义方式与...

  • 共用体和枚举类型

    共用体 共用体就是多个不同类型的数据共用一个内存空间 定义 初始化 使用 运行结果 因为输入的是设置的是97 而...

  • Swift学习 -- 数据类型

    Swift的数据类型介绍: 整型,浮点型,对象类型,结构体类型,枚举类型,共用体类型等等 下面主要介绍整型和浮点型...

  • C++ - 用户自定义数据类型

    C++允许用户根据需要自己声明一些类型,包括数组、结构体类型、共用体类型、枚举类型、类类型 结构体类型 在一个组合...

  • 以最简单的方式学习C语言(四)

    C语言数据类型 1.基本类型:整型,实型(浮点型),字符型,枚举型。 2.构造类型:数组类型,结构体类型,共用体...

  • c语言知识简记

    1.四种数据类型:基本类型(整型、实型、字符型、枚举类型)、构造类型(数组、结构体、共用体)、指针类型、空类型2....

  • Java--枚举

      JDK1. 5引入了枚举类型。枚举类型的定义包括枚举声明和枚举体。格式如下:   枚举体就是放置一些常量。我们...

网友评论

    本文标题:第四章 复合类型(5)共用体与枚举

    本文链接:https://www.haomeiwen.com/subject/bxdtgctx.html