1,枚举是个啥?

c++允许程序员创建自己的数据类型,枚举数据类型是程序员自定义的一种数据类型,其值是一组命名整数常量。

enum day{mon,tue=,wed,thu,fri,sat,sun};
//定义一个叫day的数据类型,如果没有赋值,默认从0开始,mon=0,tue=1。。。如果赋值过了,就像tue=2,那么下一个会+1,wed=3,thu=4,,,

2,枚举怎么用?

#include "pch.h"
using namespace std; int main() {
enum day{mon,tue,wed,thu,fri,sat,sun};
day today;
today = mon;//合法
today = ;//不合法,tue的值虽然是1,但是1并不对应着tue,int类型不能赋值给day类型的变量
int hehe = mon;//合法,枚举量是整形 return ;
}

枚举可以简写:

enum {red,green,white,black,blue};
//省略新类型名的简写,这样做更加关注于定义的符号常量

3,枚举使用

#include "pch.h"
using namespace std;
enum {red,green,orange};
int main() {
int favorcolor = ;
switch(favorcolor) {
//注意c++中switch的一个特性,它跳到1以后,不加break会接着依次执行其下的所有case语句,所以,要根据情况加上break
case red:printf("u like red\n"); break;
case green:printf("u like green\n"); break;
case orange:printf("u like orange\n"); break;
}
return ;
}

4,新式的枚举用法

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std; enum Alert { green, yellow, orange, red }; // traditional enum
enum class Color { red, blue }; // new enum int main() {
int a1 = green;
int a2 = Alert::yellow;
//传统的枚举类型Alert内部的数据作用范围是全局的,加不加命名空间都可以访问 Color a3 = Color::red;
//新式的枚举类型的名称的作用域在类中,必须加上命名空间进行访问 int i1 = Alert::yellow;
int i2 = Color::red;//错误
//新式的枚举值不可以转换为其他类型 enum class Color1:int { red, blue };
enum class Color2 :char { red = 'r', blue = 'b', black };
//可以用冒号选择枚举的底层数据类型 return ;
}

c++ 踩坑大法好 枚举的更多相关文章

  1. c++踩坑大法好 typedef和模板

    1,typedef字面意思,自定义一种数据类型 语法:typedef 类型名称 类型标识符; 基本用法: 1) 为基本数据类型定义新的类型名. 2) 为自定义数据类型(结构体.公用体和枚举类型)定义简 ...

  2. c++踩坑大法好 数组

    1,c++遍历数组 int数组和char数组不同哦,int占4位,char占1未,同理double也不同.基本遍历方法: ] = { ,,, }; ]); printf("len of my ...

  3. c++踩坑大法好 赋值和指针的区别

    1,先说结论: 两个指针指向同一个结构,一个改了结构,另一个也会改掉. 两个指针指向同一个结构,修改了其中一个的指向,并且改了其中的内容,另一个不为所动. 2,看例子 main.cpp #includ ...

  4. c++ 踩坑大法好 char字符,char数组,char*

    1,基本语法 1,定义一个char字符: char hehe='a'; //单引号 2,定义一个由char字符组成的数组: char daqing[] = "abcd"; char ...

  5. c++ 踩坑大法好 复合数据类型------vector

    1,vector是啥? 是具有动态大小的数组,具有顺序.能够存放各种类型的对象.相比于固定长度的数组,运行效率稍微低一些,不过很方便. 2,咋用? 声明: vector <int> vi; ...

  6. c++踩坑大法好 宏定义 头文件

    1,c++宏定义是干啥的?防止重复引用,如何防止重复引用? //a.h //声明一个类,和其他声明 #include <iostream> class A{ public: static ...

  7. 踩坑系列の Oracle dbms_job简单使用

    二话不说先上代码 --创建存储过程 create or replace procedure job_truncateState is begin --此处就是要定时执行的sql execute imm ...

  8. JavaScript 新手的踩坑日记

    引语 在1995年5月,Eich 大神在10天内就写出了第一个脚本语言的版本,JavaScript 的第一个代号是 Mocha,Marc Andreesen 起的这个名字.由于商标问题以及很多产品已经 ...

  9. Go“一个包含nil指针的接口不是nil接口”踩坑

    最近在项目中踩了一个深坑--"Golang中一个包含nil指针的接口不是nil接口",总结下分享出来,如果你不是很理解这句话,那推荐认真看下下面的示例代码,避免以后写代码时踩坑. ...

随机推荐

  1. Apache Solr JMX服务远程代码执行漏洞复现

    0x00 漏洞介绍 该漏洞源于默认配置文件solr.in.sh中的ENABLE_REMOTE_JMX_OPTS配置选项存在安全风险. Apache Solr的8.1.1和8.2.0版本的自带配置文件s ...

  2. C#连接数据库的方法

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  3. Luarocks 安装艰难过程

    https://www.cnblogs.com/fanxiaojuan/p/11551268.html

  4. RHEL7开机不能正常进入系统(图形化界面)

    今天在重启RHEL7的虚拟机后一直无法正常开机,一直提示输入管理员密码,如下图所示: 输入密码后进入命令行模式,经排查出现此现象的问题是在挂载银盘的时候文件格式写错,在格式化硬盘的时候格式化的是xfs ...

  5. window10家庭版解决IIS中万维网服务的安全性中无Windows身份验证

    首先在左下角输入cmd搜索->命令提示符->以管理员身份运行->然后复制下面一段命令: dism /online /norestart /add-package:%SystemRoo ...

  6. CSRF防护

    CSRF防护 (待完善...)

  7. tomcat - 解决 org.bouncycastle.asn1.ASN1Boolean 非法循环依赖的错误

    背景 记录遇到一次奇怪的错误,在发布war包到Tomcat的时候,出现了org.bouncycastle.asn1.ASN1Boolean非法循环依赖的错误. INFO: Deploying web ...

  8. SQL JOIN 的解析

    1.SQL语句结构 select  distinct  < select_list > from  < left_table > < join_type > joi ...

  9. 三维偏序[cdq分治学习笔记]

    三维偏序 就是让第一维有序 然后归并+树状数组求两维 cdq+cdq不会 告辞 #include <bits/stdc++.h> // #define int long long #def ...

  10. phpcms v9全站点击量排行代码

    前台: <ul> {pc:content action="sitehits" siteid="1" num="10" order ...