C++构造数据类型|枚举类型

news2024/11/26 2:46:32

C++构造数据类型|枚举类型

  • 1. 枚举类型
    • 1.1 函数重载的定义
    • 1.2 枚举类型的声明
    • 1.3 例1:
    • 1.4 例2:
  • 2. 枚举类型的定义说明
  • 3. 枚举类型的使用
    • 3.1 枚举变量的赋值
    • 3.2 枚举变量的运算
    • 3.3 枚举变量的输入
    • 3.4 注意事项
  • 4 示例代码

1. 枚举类型

1.1 函数重载的定义

“枚举”是指将变量所有可能的取值一一列举出来,变量的取值只限于列举出来的常量。 1

1.2 枚举类型的声明

枚举类型的声明的一般形式如下 :
在这里插入图片描述
枚举类型名以及枚举常量为标识符,遵循标识符的取名规则。
在定义一个枚举类型时,定义了多个常量,供枚举类型变量取值,称此常量为枚举常量。当没给各枚举常量指定值时,其值依次默认为0、1、2、…;在定义枚举类型时,也可使用赋值另行指定枚举常量的值。

1.3 例1:

enum  weekday { SUN, MON, TUE, WED, THU, FRI, SAT }

定义了7个枚举常量以及枚举类型weekday。枚举常量具有默认的整数与之对应:SUN的值为0、MON的值为1、TUE为2、…、SAT为6。

1.4 例2:

 enum city{ Beijing,Shanghai,Tianjin=5,Chongqing}

枚举常量Beijing的值为0,Shanghai的值为1,Tianjin的值指定为5。对于指定值后面的没有指定值的枚举常量,编译器会将前一个常量值加1(下一个整数)赋给它,所以Chongqing的值为6。

2. 枚举类型的定义说明

  • 枚举类型定义了以后就可以使用枚举常量、使用用枚举类型来定义变量,定义枚举变量的方法与定义其它变量的方法一样。
    例如:
 enum  city  city1, city2;   
  city   city1, city2;

用两种不同方法定义了city1city2两个枚举类型的变量名。

  • 枚举类型变量也可以在定义枚举类型的同时定义,例如:
  enum city{Beijing,Shanghai,Tianjin=5,Chongqing} city1, city2;
  • 在定义枚举类型的同时定义枚举类型变量可以省略枚举类型名,例如:
   enum {Beijing,Shanghai,Tianjin=5,Chongqing} city1, city2;
  • 在定义变量时,可以顺便给出初值,若不给初值,默认初值为随机的无意义的数。

3. 枚举类型的使用

3.1 枚举变量的赋值

用枚举类型建立枚举变量后就可以对枚举变量实施赋值以及进行其它运算了,对枚举变量进行赋值,其值要求为同一枚举类型。否则,在编译时出错。
例如:

weekday d1,d2,d3,d4;
d1=SUN;
d2=6;            //错误
d3=Shanghai;     //错误

其中对d2所赋之值是整数6,不是枚举常量;可以采用将一个整型值强制转换成同类型的枚举常量赋给枚举变量。

3.2 枚举变量的运算

枚举常量、枚举类型的变量可进行算术运算、关系运算。
对枚举类型实施算术、关系运算时,枚举值转换成整型值参加运算,结果为整型值。所以,如果要将结果赋给枚举变量,还要将结果转换成枚举值。
例如:

d1=d1+2; //是错误的,因为结果为int型。
//需要将它强制转换成枚举型:
d1=(weekday)(d1+2);

枚举常量、枚举类型的变量可直接进行各种形式的关系运算。
例如:

if(city1==3)if(city2>=Beijing)if(Shanghai==1);
if(city1>SUN);

3.3 枚举变量的输入

枚举类型变量不能直接进行输入
例如:

cin>>d1;   //错误

3.4 注意事项

  • 枚举常量是常量,不是变量,所以不能对枚举常量进行赋值。
    例如: 在上例中不能进行赋值 Shanghai=Beijing
  • 枚举常量的值不是列举的字符串,其值为整数。
  • 编译器对赋给枚举变量的对象(数)进行类型检查,如类型不相符则发出警告。 当类型相同,而值超出此类枚举类型枚举常量范围时,也是正常的。

4 示例代码

/**********************************************************
*  功   能:枚举类型的使用,输入城市代号,输出城市名称      *
**********************************************************/
	#include<iostream>
	using namespace std;
	enum city{ Beijing,Shanghai,Tianjin=6,Chongqing};
	int main()
	{
	  int n;
	  cout<<"Input a city number ("<<Beijing-1<<" to exit):"<<endl;
	  cin>>n;
	  while(n>=Beijing){
	      switch(n) {
	        case Beijing: cout<<"Beijing"<<endl;break;
	        case Shanghai:cout<<"Shanghai"<<endl;break;
	        case Tianjin:cout<<"Tianjin"<<endl;break;
	        case Chongqing:cout<<"Chongqing"<<endl;break;
	        default:cout<<"Invalid city number!"<<endl;break;
	      }
	      cin>>n;
	   }
    return 0;
	}

  1. 本教程仅供教学使用,参考教材 :《C++语言程序设计教程》,杨进才、沈显君编著,清华大学出版社,2022年1月第4版 ↩︎

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

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

相关文章

cdr工具介绍之刻刀工具

在日常的生活当中&#xff0c;在很多时候我们会遇到各种各样的难题&#xff0c;但软件cdr他就是一个神奇的存在&#xff0c;因为他能帮助我们解决很多专业方面的的知识。尽管他的内容相比较其他的一些设计软件而言相对于较为少&#xff0c;但是他确实一个非常适合于平常的工作学…

arthas源码刨析:arthas-core (2)

文章目录 attach JVMagent**ArthasBootstrap** arthas-core的启动可以从上一篇做参考 参考 pom&#xff0c;即启动是调用的 Arthas 的 main 方法 attach JVM JVM提供了 Java Attach 功能&#xff0c;能够让客户端与目标JVM进行通讯从而获取JVM运行时的数据&#xff0c;甚至可以…

算法-矩阵置零(73)

leetcode题目链接 这道题因为要求在O&#xff08;1&#xff09;的空间复杂度下面完成&#xff0c;所以最好的情况就是利用矩阵本身有的元素进行代码编写&#xff0c;而不另外开辟空间。 所以思路如下&#xff1a; 1.遍历第一行第一列&#xff0c;观察是否需要置0&#xff0c…

【面试实战】2024-08-22-面试总结

文章目录 1. 讲讲内存管理2. 什么是智能指针&#xff1f;有哪些种类&#xff1f;分别应用于哪些场景&#xff1f; 1. 讲讲内存管理 栈和堆的区别&#xff1a; ①栈和堆都是用来存储程序数据的内存区域。栈上的内存区域是有限的&#xff0c;栈用来存储局部变量和函数的调用信息。…

史上最强座舱AI芯登场,座舱「百模大战」爆发前夜

作者 |张马也 编辑 |德新 一场座舱大模型的竞赛&#xff0c;正在拉开序幕。 8月&#xff0c;英特尔在深圳举办AI座舱产品暨车载独立显卡发布会上。 会上&#xff0c;其发布了首款锐炫车载独立显卡ARC A760-A&#xff0c;这在已经高度内卷的座舱市场&#xff0c;又投下一颗重…

微软发布 Phi-3.5 系列模型,涵盖端侧、多模态、MOE;字节 Seed-ASR:自动识别多语言丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

DatePicker 两个日期选择框的时间范围设置不可选日期

思路 截至时间的不可选择日期&#xff0c;通过监听开始时间&#xff0c;生成

tp5php7.4配置sqlserver问题汇总

先修改database.php文件 查看php版本选择sqlserver扩展 通过百度网盘分享的文件&#xff1a;sqlserver 链接&#xff1a;https://pan.baidu.com/s/1zrIV8VWQZM9miLpyH01Aww?pwdxdgx 提取码&#xff1a;xdgx 通过我的分享链接复制自己需要的dll到php的ext下 在php.ini里添加扩…

电子看板助力线缆工厂生产数字化改善

在当今数字化时代&#xff0c;线缆工厂面临着日益激烈的市场竞争和不断提高的客户需求。为了提高生产效率、降低成本、提升产品质量&#xff0c;越来越多的线缆工厂开始引入电子看板系统&#xff0c;实现生产数字化改善。 一、线缆工厂生产面临的挑战 1、生产过程复杂 线缆生产…

【与C++的邂逅】--- 类和对象(中)

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 与C的邂逅 本篇博客我们将学习类和对象中&#xff0c;认识类的六个默认成员函数以及实现日期类。下图为本节思维导图。 &#x1f3e0; 类的6个默认成员函…

云渲染助力:轻松应对UE5的高电脑配置需求

UE5以其革命性的图形和模拟技术&#xff0c;不断推动游戏和视觉艺术的边界&#xff0c;但对高端硬件的依赖往往成为创意实现的瓶颈。幸运的是&#xff0c;云渲染的出现打破了这一限制。通过云端的强大计算资源&#xff0c;云渲染为艺术家和开发者提供了灵活、可扩展的解决方案&…

个人理解—uboot启动过程(2)BL1低级初始化

lowlevel_init看名字就知道是关于初级方面的初始化&#xff0c;其中可用将其干的事情分为11个步骤&#xff1a; &#xff08;1&#xff09;push {lr} 也就是lr压栈。 &#xff08;2&#xff09;检测复位状态&#xff1a;如冷上电、热启动、睡眠等。冷上电要初始化DDR后才能使用…

无线电子产品前端射频设计注意事项

1 引言 1.1 编写目的 整理带无线的产品RF部分对外壳及PCBA设计注意事项&#xff0c;主要目的是为设计者提供一些参考&#xff0c;提高无线产品的设计质量和效率、保证可生产性。 1.2 背景 RF布局是射频电路设计极为重要的步骤和环节&#xff0c;关系到射频信号能否有效的工…

房产系统架构开发小程序分析

房产系统架构开发小程序在当前市场中具有显著的优势和潜力。以下是对房产小程序的分析&#xff1a; 用户需求满足&#xff1a;房产小程序通过提供楼盘信息查询、VR看房体验、购房流程指南等功能&#xff0c;满足用户对房产信息的需求&#xff0c;并提供更加便捷的用户体验 。…

第4章 汇编语言和汇编软件

第4章 汇编语言和汇编软件 该章主要介绍了汇编语言和汇编语言编译器的安装和使用。 汇编语言程序 该小节主要介绍了为什么要有汇编语言和汇编语言程序的一些基础写法。 书中有提到CPU有不同的架构&#xff0c;汇编语言有不同的风格&#xff0c;那么不同的CPU架构和不同的汇…

线上陪玩APP开发功能分析

随着电子竞技和在线娱乐的兴起&#xff0c;线上陪玩APP作为一种新兴的服务模式&#xff0c;逐渐受到广大游戏爱好者的青睐。开发一款高效、便捷、用户友好的线上陪玩APP&#xff0c;需要综合考虑市场调研、功能规划、技术选型、用户体验及安全性等多个方面。以下是对线上陪玩AP…

matter模组有无源测试事例

测试一款matter模组的硬件性能 1.1 天线阻抗、电压驻波比测试 主要测试&#xff1a;PCB板载天线设计效率及板材PCB铜面的平整度等 1.2 模组有源数据测试 主要测试&#xff1a;模组的阻抗匹配、频偏等情况 1.3 模组传输能量精度 主要测试&#xff1a;矢量误差等数据 1.4 模…

PCL “libvtkCommonCore-9.1.so.9.1.0: undefined reference to...@GLIBCXX_3.4.30”

1.问题描述&#xff1a; 完成 PCL、VTK 搭建后(https://mp.csdn.net/mp_blog/creation/editor/139858438)&#xff0c;笔者运行PCL项目程序中&#xff0c;遇到下面错误&#xff1a; [build] /usr/bin/ld: /usr/lib/x86_64-linux-gnu/libvtkCommonCore-9.1.so.9.1.0: undefine…

云计算产业链图谱_产业链全景图_云计算行业市场分析

在产业数字化转型的背景下&#xff0c;云计算作为信息技术的重要组成部分&#xff0c;正逐渐成为各行业数字化、智能化转型的关键支撑。受益于5G、大数据、物联网、人工智能等技术的快速发展&#xff0c;云计算产业规模持续扩大&#xff0c;市场需求不断增长。云计算作为一种新…

【握奇数据招聘(北森)-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…