当前位置: 首页 > news >正文

网站栏目规划注意事项手机购物网站开发

网站栏目规划注意事项,手机购物网站开发,天猫优惠卷怎么做网站,关于网页设计The ChenPi 前言 今天我们要讲的是 C 中的枚举。 enum 是 enumeration 的缩写#xff0c;基本上可以说#xff0c;它就是一个数值集合。如果你想要给枚举一个更实际的定义#xff0c;它们是给一个值命名的一种方法。 所以我们不用一堆叫做 A、B、C 的整数。我们可以有一个… The ChenPi 前言 今天我们要讲的是 C 中的枚举。 enum 是 enumeration 的缩写基本上可以说它就是一个数值集合。如果你想要给枚举一个更实际的定义它们是给一个值命名的一种方法。 所以我们不用一堆叫做 A、B、C 的整数。我们可以有一个枚举数。它的值是A、B、C。它们与整数相对应。这能帮助我们将一维数值集合作为类型而不仅仅是用整型作为类型。 当然你可以给它赋值任何整数也就是设置哪些值可以赋值。 枚举其实一点都不复杂就是这些了。它只是一种命名值的方法当你想要使用整数来表示某些状态或者某些数值时它非常有用。 01 为什么使用枚举 让我们来看看具体的看例子吧。 #include iostreamint A 0; int B 1; int C 2;int main() {int value A;if(4 value){}return 0; } 我有三个值要处理。我们把 A 设为 0B 设为1C 设为 2。然后在 main 的某个地方使用 value 变量。先让它等于这三个中的一个然后通过一些代码来检查当前的 value 值是什么然后执行某种操作。 很好然而这样会带来一些问题。 这些 ABC 根本就没有分组在代码后面的某个地方你可能会有一个 D或者你可能想再次声明 A这就成了一个问题。——本质上最大的问题还是这些变量根本没有分组。 此外它们只是整数。 这也就意味着我可以在将 value 值的直接赋值为 5那它下面的代码就没有意义了。 我们希望能够从本质上定义一个类型它只能是这三个数中的一种而且能够把它们组合起来。——这里正是我们使用枚举的地方。 02 如何使用枚举 我们对代码做一些修改。 我创建一个枚举 enum。叫作 Example然后我可以列出我想要的值。例如 A、B 或 C。这里不用 int 作为类型了。 现在我们可以使用枚举的名称作为实际类型。 #include iostreamenum number_type {A 0,B,C };int main() {number_type value A;if(-1 A){}return 0; } 这样就可以正确的使用枚举了。我们可以像例子中那样赋值。 如果我尝试赋别的值会得到一个错误。——因为它必须是上面三个中的一个。 ​ 而且你要记住一点。这里面的值只能是整数。 好了接下来可以做之前想做的操作了。比如我会这样写。 ​ 你这个时候会有一个疑问。——我怎么知道 B 的值是多少 你把鼠标悬停在第五行查看 ABC 的值。可以清楚的看到 A 的值是 0B 的值是 1C 的值是 2。这些值是默认的它默认第一个是 0然后它一个接一个的递增。 你也可以直接指定它们的值你想要设置成多少都可以。 ​ 如果你从一个非 0 的数字开始比如 5没有指定其余的值你可以看到后面的 B 的值变为了6C的值是7。就是这样递增的。 这里还可以做的另外一件事是指定你想要给枚举赋值的整数类型。 ​ 这样做的的作用是设置每一个数据的类型是 8 位整型。默认是 32 位的整型——其实没有必要用那么大的数字是吧。 所以这样做减少了内存的使用。 不过千万要记住这里不能使用 float。float 不是整数这里必须是一个整数比如char。 这就是枚举的本质它只是给特定的值命名的一种方式。然后你就不必在各种地方处理各种整数了。 03 日志Log使用枚举的例子 让我们来看一个真正的例子你可能会在这里使用枚举。 我们有一个日志类这个类在 如何写一个 C 类 那一期讲过。 我们先简单的回顾一下那个程序。 #include iostream class Log { public:const int LogLevelError 0; //日志级别Error 0const int LogLevelWarning 1; //const int LogLevelInfo 2; //private:int m_level; //私有的变量用于类的内部public:void setLevel(int level) //设置日志级别{m_level level; //}void Error (const char* messge) //打印错误级别的日志信息{if(m_level LogLevelError)std::cout messge std::endl;}void warning(const char* messge) //打印警告级别的日志信息{if(m_level LogLevelWarning)std::cout messge std::endl;}void Info(const char* messge) //打印正常级别的日志信息{if(m_level LogLevelInfo)std::cout messge std::endl;}};int main() {Log log;log.setLevel(log.LogLevelWarning); //日志级别设为warning 1log.warning(hello ,this is warning);log.Error(hello,this is Error); //log.Info(this is Info); //return 0; }在这里我们使用了三个不同的 log 级别。它们只是整数 0、1、2。可以看到这是一个非常适合用枚举的地方。 因为我们有三个值我们用它们作为整数来表示某个状态。 这个例子中的日志级别是指会展示哪种级别的日志。 接下来我们在这个类中创建一个名叫 Level 的枚举。 你可以看到我显示的把这个 LogleveError、LogleveWarning、LogleveInfo 设置为 0、1、2。我个人很喜欢这样做这样可以帮助代码提高可读性。 然后删除下面的几个定义最后调整成现在这个样子。 我们将它设置为枚举等于是加了条件它只能是那三个值了纯粹从语法上 C 编译器会强制执行这些限制但你也可以很容易的绕过它。它不是那种从物理上都无法设定的东西。当然我们的枚举数只是四字节的整数只有四个字节的内存你可以可以把任何你想要的东西放进那个内存里。 ok我们通过设置类型为 Level 来限制我们的代码。 将下面的代码也做一些修正。 ​ 然后是主程序当中的 SetLevel 函数。 ​ 你会发现这里的设置有点不太一样。我们有一个枚举数叫做 Warning。在 Log 这个类的命名空间中这个枚举 Level 本身不是一个命名空间这个叫做枚举类 然而对于普通的枚举而言Level 并不是真正的命名空间所以你不能把它当成一个命名空间就意味着 Warning 和 Info 它们只存在于这个日志类中。你看到我可以把它设置为 Warning。 现在程序一切正常了。 最后修改过的代码 #include iostream class Log { public:enum LogLevel{LogLevelError 0,LogLevelWarning,LogLevelInfo};private:LogLevel m_level LogLevelInfo; //私有的变量用于类的内部public:void setLevel(LogLevel level) //设置日志级别{m_level level; //}void Error (const char* messge) //打印错误级别的日志信息{if(m_level LogLevelError)std::cout messge std::endl;}void warning(const char* messge) //打印警告级别的日志信息{if(m_level LogLevelWarning)std::cout messge std::endl;}void Info(const char* messge) //打印正常级别的日志信息{if(m_level LogLevelInfo)std::cout messge std::endl;}};int main() {Log log;log.setLevel(Log::LogLevelWarning); //日志级别设为warning 1log.warning(hello ,this is warning);log.Error(hello,this is Error); //log.Info(this is Info); //return 0; }最后的话 枚举的本质就是让我们的编码更容易让我们的代码更干净。 在枚举的后面其实就是整数你可以把它们用在很多地方。枚举有很多很多用途 好了记住如果你有一个数值集合想要用数字来表示它们那么枚举就是你想要的。
http://www.w-s-a.com/news/342212/

相关文章:

  • 中国建设银行网站E路护航官网如何在招聘网站上选个好公司做销售
  • 网站开发质量管理招聘网站建设方案
  • 有没有那个的网站seo编辑的工作内容
  • 平度那里有做网站的昆明建设招聘信息网站
  • 邯郸城乡建设部网站首页唐山市住房城乡建设部网站主页
  • 慕课联盟网站开发实战六安品牌网站建设电话
  • 制作企业网站首页贵州小程序制作开发
  • 什么是网站后台郑州众志seo
  • 做线上交互的网站分销平台
  • 培训机构网站开发江门cms模板建站
  • 网站描述模板建筑模型网站有哪些
  • 域名注册费用张家界seo
  • 淘宝联盟怎么自己做网站山西省住房与城乡建设厅网站
  • 最新网站建设常见问题使用微信推广的各种方法
  • 购物网站建设课程设计报告做木工的网站
  • 扶沟县网站开发网站建设在哪里进行
  • 查看网站服务器信息网站首页地址 网站域名
  • 网站网站制作网站的ui界面设计案例分析
  • 怎么查网站是否备案成都装修公司联系电话
  • 佛山免费发布信息的网站oa办公系统排行榜
  • 南湖区建设街道办事处网站汕头建设银行各支行电话
  • 复古风格网站网站套餐方案
  • 界面设计做的好的网站旅游商城网站模板
  • 大型电子商务网站 服务器硬件 cpu 内存 硬盘 2014美食网站开发意义
  • 建立网站的目的和意义网站建设寻求
  • 邢台手机网站建设设计师培训心得
  • 营销网站怎么做丽水微信网站建设哪家好
  • 南昌定制网站开发多少钱东阿县城市建设局网站
  • 浙江网站建设公司南昌seo招聘
  • 工业软件有哪些专业seo站长工具全面查询网站