当前位置: 首页 > 编程日记 > 正文

《挑战30天C++入门极限》新手入门:C/C++中枚举类型(enum)

新手入门:C/C++中枚举类型(enum)

如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。

  举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!

enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。

这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义!

enum box{pencil,pen}; 
 
enum box box2;//或者简写成box box2;

再有一种就是在声明的时候同时定义。

enum {pencil,pen}box,box2; //在声明的同时进行定义!

枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作!

enum box{pencil=1,pen=2};

但是这里要特别注意的一点是,如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作,例如

enum box{pencil=3,pen};//这里pen就是4系统将自动进行pen=4的定义赋值操作!

前面说了那么多,下面给出一个完整的例子大家可以通过以下的代码的学习进行更完整的学习!

#include <iostream
using namespace std; 
 
void main(void

    enum egg {a,b,c}; 
    enum egg test; //在这里你可以简写成egg test; 
 
    test = c; //对枚举变量test进行赋予元素操作,这里之所以叫赋元素操作不叫赋值操作就是为了让大家明白枚举变量是不能直接赋予算数值的,例如(test=1;)这样的操作都是不被编译器所接受的,正确的方式是先进行强制类型转换例如(test = (enum egg) 0;)! 
 
    if (test==c) 
    { 
        cout <<"枚举变量判断:test枚举对应的枚举元素是c" << endl; 
    } 
 
    if (test==2) 
    { 
        cout <<"枚举变量判断:test枚举元素的值是2" << endl; 
    } 
 
    cout << a << "|" << b << "|" << test <<endl; 
 
    test = (enum egg) 0; //强制类型转换 
    cout << "枚举变量test值改变为:" << test <<endl; 
    cin.get(); 
}

看到这里要最后说一个问题,就是枚举变量中的枚举元素(或者叫枚举常量)在特殊情况下是会被iostream> 
using namespace std; 
 
void main(void

    enum test {a,b}; 
    int c=1+b; //自动提升为算术类型 
    cout << c <<endl; 
    cin.get(); 
}

转载于:https://www.cnblogs.com/landv/p/11184652.html

相关文章:

【二级java】 二分法查找

例题1 &#xff1a;对长度为n的线性表进行顺序查找&#xff0c;在最坏情况下所需要的比较次数为______。 解析&#xff1a; 如果线性表中的第一个元素就是被查找元素&#xff0c;则只需做一次比较就查找成功 查找次数为1 如果线形表中不存在该数据&#xff0c;查找次数为n 例…

List和ObservableCollection的相互转化

在WPF &#xff0c; silverlight &#xff0c;WP7中经常会用到List<T>和ObservableCollection<T>。这里简单讲一下他们之间的相互转换。 1.List<T>的简单介绍&#xff1a; List<T>代表的是强类型的Ojbect集合&#xff0c;可以通过索引访问并且提供了查…

获取局域网打印机列表

/// <summary> /// 获取局域网打印机列表 /// </summary> /// <param name"DefaultPrinter">默认打印机</param> /// <returns>局域网中所有打印机列表</returns> public static List&…

戏说 .NET GDI+系列学习教程(三、Graphics类的应用_验证码)

关于Graphics也有了基本了解下面想说的的是学这个东东干什么呢&#xff0c;到底如何应用目前常见应用1、验证码&#xff08;参照网上的&#xff09;2、打印排版&#xff08;会提到关于条形码大小设置&#xff09;3、自定义控件 一、验证码 1 class ValidateCode2 {3 …

转载:HBuilder常用快捷键

原文&#xff1a;http://www.cnblogs.com/DCL1314/p/8625110.htmlHBuilder常用快捷键1.文件新建 Ctrl N 关闭 Ctrl F4 全部关闭 Ctrl Shift F4 属性 Alt Enter 2.编辑激活代码助手 Alt / 激活快捷键视图 Ctrl Shift L开启关闭注释整行 Ctrl / 开启关闭注释已选内容 Ct…

java源程序结构

JAVA培训 一个完整的java源程序应该包括下列部分&#xff1a;  package语句&#xff1b; //该部分至多只有一句&#xff0c;必须放在源程序的第一句  import语句&#xff1b; /*该部分可以有若干import语句或者没有&#xff0c;必须放在所有的          类定义之前…

【二级java】排序技术

例题1 &#xff1a;希尔排序属于下列哪种排序法 解析&#xff1a; 希尔排序法的基本思想是&#xff1a; 将整个无序序列分割成若干小的子序列分别进行插入排序&#xff0c;所以属于插入排序 例题2 &#xff1a; 在下列几种排序方法中&#xff0c;要求内存量最大的是 解析&am…

HDU 1257 - 最少拦截系统 ( LIS / 贪心 )

题目 现在有一种拦截系统&#xff0c;第一发拦截可以是任意高度&#xff0c;但是之后的拦截高度不能比上次高。为了拦截下所有的炮弹&#xff0c;最少需要准备几套拦截系统&#xff1f; 思路 可能是语文没学好吧&#xff0c;一开始被题意卡了一下。&#xff08;而且题目连数据范…

python练习:猜价钱小游戏

#猜价钱 trueprice 202 price input("Please guess the price:") while (int(price) ! trueprice):if(int(price) > trueprice):price input("Your price is higher,Please try again:")else:price input("Your price is lower,Please try aga…

android系统短信库的一些用法

1、查询所有短信&#xff0c;按发件人进行分组Cursor mCursor managedQuery(Uri.parse("content://sms"),new String[] {"_id,address,date,read,status,type,body,count(address) as " "totleCount from (select _id,substr(address,4) as address,…

【二级java】操作题知识点积累

1、java中^代表亦或&#xff08;相同为0&#xff0c;不同为1&#xff09; 2、使用下标直接访问字符串中字符的方法 string.charAt&#xff08;&#xff09; 3、从主方法派出异常给jvm时 使用的是 throws 而不是 throw 4、使用InputStreamReader 、BufferedReader时需要使用的包…

Utilize Sql Tuning Advisor from Script

Sql Tuning Advisor是10g以后出现的一个十分有用的调优工具&#xff0c;大多数情况下我们可以通过dbconsole或者Grid Control的web界面调用SQL Advisor&#xff1b;但如果系统中没有配置dbconsole或者Grid Control的话&#xff0c;我们则需要通过手动调用DBMS_SQLTUNE PL/SQL程…

Isight 命令行运行任务

说明书参考:https://abaqus-docs.mit.edu/2017/English/DSSIMULIA_Established.htm 不一定对版本。但是大部分还可以。 不对的可以在命令里敲help 首先&#xff0c;说明书里的命令行客户端默认加入环境变量。 实测win/linux安装没有环境变量。可以自行添加也可找到目录自行运行…

【二级java】软件工程基础

1、软件工程三要素 &#xff1a; 方法 工具 过程 2、软件工程中根本上来说是为了研究软件开发技术 3、软件工程的定义 &#xff1a; 应用于计算机软件的定义、开发维护的一整套方法、工具、文档、实践标准和工序 4、软件危机的表现 &#xff1a; 软件的生命周期&#xff1a;…

ASP.NET WebAPI 11 参数验证

在绑定完Action的所有参数后,WebAPI并不会马上执行该方法,而要对参数进行验证,以保证输入的合法性. ModelState 在ApiController中一个ModelState属性用来获取参数验证结果. public abstract class ApiController : IHttpController, IDisposable{public ModelStateDictionary …

C#WinForm的线程及Invoke应用(转)

C#多线程异步访问winform中控件 http://zwkufo.blog.163.com/blog/static/25882512009111453957552/?fromdm&fromSearch&isFromSearchEngineyes 我们在做winform应用的时候&#xff0c;大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传…

C/C++语言点滴

C/C学习笔记 1.C语言中使用关键字sizeof来求数组长度 char temp[3]; int tempLen sizeof(temp)/sizeof(char); strlen只能用来求字符串长度 2.交换两个数据的几种方法及其区别 方法一&#xff1a;值传递&#xff0c;在main函数中并未改变a,b 的值&#xff0c;虽然在swap中a…

[C#][EF] 添加表添加不进来

确认此表有没有主键&#xff0c;没有主键时就会这样。转载于:https://www.cnblogs.com/z5337/p/8891230.html

DNN 数据访问策略 (转)

经过几天断断续续的努力&#xff0c;这篇文章终于翻译结束&#xff0c;文章主要讲了DNN的数据访问策略&#xff0c;对于了解系统整体上是如何工作的有一定的帮助&#xff0c;希望能给dnn的初学者一些有用的信息。由于翻译的匆忙水平有限&#xff0c;错误或不当之处在所难免&…

Windows程序设计学习笔记(1):一个简单的windows程序

《Windows程序设计》(第五版)(美Charles Petzold著) 1 #include<windows.h>2 3 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);4 5 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdline,int iCmdShow) 6 //第一个参数是实例句柄&#…

【二级java】模拟题知识点总结

算法的复杂度 &#xff1a; &#xff08;一&#xff09;时间复杂度 &#xff1a; 执行算法所需要的计算工作量&#xff0c;与计算机的运行速度和存储空间无关 &#xff08;二&#xff09;空间复杂度 &#xff1a; 算法在运行过程中临时占用的存储空间的大小。 零散知识点 &am…

虚拟化市场成熟

调查称虚拟化市场已经成熟 VMware份额领先 存储在线 11年03月18日 WangFei 导读&#xff1a;据市场研究公司Forrester Research最新研究表明&#xff0c;虚拟服务器技术的应用实际上是从去年开始的&#xff0c;虚拟服务器技术终于完成了测试和研发阶段。 关键词&#xff1a…

python day two,while

一、运算符号 算数运算符&#xff1a; 、-、*、/、//&#xff08;取整除&#xff09;、%&#xff08;去余&#xff09;、** 比较运算符&#xff1a;>、< 、>、<、 赋值运算符&#xff1a;、、-、/、%、** 逻辑预算符&#xff1a;and、or、not 布尔值 成员运算符&am…

【模板】树状数组 2

题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面两种操作&#xff1a; 1.将某区间每一个数数加上x 2.求出某一个数的值 输入输出格式 输入格式&#xff1a; 第一行包含两个整数N、M&#xff0c;分别表示该数列数字的个数和操作的总个数。 第二行包含N个用空格…

【java】Maven工程引入各种jar包的功能

1、mysql驱动 &#xff1a; 代码实现 &#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>6.0.6</version></dependency> 2、数据库操作工具 &#xff1a; 代码实现…

[转]Android横竖屏切换解决方案

本文转自&#xff1a;http://www.cnblogs.com/domybest/archive/2011/06/30/2094779.html 首先在Mainifest.xml的Activity元素中加入android:configChanges"orientation|keyboardHidden"属性<activity android:name".FileBrowser" android:label"s…

【百度地图API】——国内首款团购网站的地图插件

摘要&#xff1a; 本文介绍了一款应用在团购网站上的地图插件&#xff0c;适用于目前非常流行的团购网站。使用这款地图插件&#xff0c;无需任何编程技术&#xff0c;你就把商家的位置轻松地标注在地图上。 前台地址 http://map.baidu.com/fwmap/upload/r/map/fwmap/tuangou/u…

Wannafly挑战赛14

A.直角三棱锥 枚举推式子 1 #include <bits/stdc.h>2 using namespace std;3 typedef long long LL;4 LL gcd(LL a, LL b){5 return a % b ? gcd(b, a % b) : b;6 }7 int main(){8 int T;9 scanf("%d", &T); 10 while(T--) { 11 …

第八章 泛型程序设计

1.带有【超类型限定 super】的通配符可以向泛型对象写入&#xff0c;带有【子类型限定 extends】的通配符可以从泛型对象读取&#xff0c;反之则不然。转载于:https://www.cnblogs.com/baokang/p/7441122.html

【java】过滤器filter的使用

一、创建filter的实现类 代码实现 &#xff1a; package com.zzxtit.common.filter;import java.io.IOException;import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax…