鱼C论坛

 找回密码
 立即注册
查看: 1294|回复: 2

[技术交流] C++ 枚举(enum)

[复制链接]
发表于 2020-7-8 13:42:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 FishC--Student 于 2020-7-8 20:44 编辑

C++ 枚举(enum)

枚举是用户定义的数据类型,由整数常量组成。可以使用关键字enum,定义枚举。

  1. enum season { spring, summer, autumn, winter };
复制代码


在这里,枚举的名称是season。

而且,spring,summer和winter是season类型的值。

默认情况下spring为0,summer为1,依此类推。您可以在声明期间更改枚举元素的默认值(如有必要的话)。

  1. <div>enum season </div><div>{   spring = 0, </div><div>    summer = 4, </div><div>    autumn = 8,</div><div>    winter = 12</div><div>};</div>
复制代码


枚举类型声明
创建枚举类型时,只会创建该变量的蓝图。这是创建枚举类型变量的方法。
  1. <div>enum boolean { false, true };</div>
复制代码



// 内部函数
  1. enum boolean check;
复制代码


在这里,创建了enum boolean类型的变量check。

这是使用不同语法声明相同check变量的另一种方法。

  1. <div>enum boolean </div><div>{ </div><div>   false, true</div><div>} check;</div>
复制代码


示例1:枚举类型
示例
  1. <div>#include <iostream></div><div>using namespace std;</div><div>
  2. </div><div>enum week { 周日,周一,周二,周三,周四,周五,周六 };</div><div>
  3. </div><div>int main()</div><div>{</div><div>    week today;</div><div>    today = 周二;</div><div>    cout << "星期几?" << today+1;</div><div>    return 0;</div><div>}</div>
复制代码


输出结果
  1. <div>星期几?3</div>
复制代码


示例2:更改枚举的默认值
示例
  1. <div>#include <iostream></div><div>using namespace std;</div><div>
  2. </div><div>enum seasons { spring = 34, summer = 4, autumn = 9, winter = 32};</div><div>
  3. </div><div>int main() {</div><div>
  4. </div><div>    seasons s;</div><div>
  5. </div><div>    s = summer;</div><div>    cout << "Summer = " << s << endl;</div><div>
  6. </div><div>    return 0;</div><div>}</div>
复制代码


输出结果

  1. Summer = 4
复制代码


为什么在C ++编程中使用枚举?
枚举变量仅取许多可能值中的一个值。如下示例来演示它:

示例
  1. <div>#include <iostream></div><div>using namespace std;</div><div>
  2. </div><div>enum suit {</div><div>    club = 0,</div><div>    diamonds = 10,</div><div>    hearts = 20,</div><div>    spades = 3</div><div>} card;</div><div>
  3. </div><div>int main() </div><div>{</div><div>    card = club;</div><div>    cout << "enum变量的大小 " << sizeof(card) << " bytes.";   </div><div>    return 0;</div><div>}</div>
复制代码


输出结果

enum变量的大小 4 bytes.
这是因为整数的大小为4个字节。

这使得enum成为使用标志的一个很好的选择。

您可以使用C ++结构完成相同的任务。但是,使用枚举可以提高效率和灵活性。

如何将枚举用于标志?
让我们举个实例,

示例
  1. <div>enum designFlags {</div><div><span style="white-space:pre">        </span>ITALICS = 1,</div><div><span style="white-space:pre">        </span>BOLD = 2,</div><div><span style="white-space:pre">        </span>UNDERLINE = 4</div><div>} button;</div>
复制代码


假设您正在为Windows应用程序设计一个按钮。可以设置标志 ITALICS,BOLD和UNDERLINE 来处理文本。

在上面的伪代码中,所有的积分常数都是2的幂是有原因的。
  1. <div>// In binary</div><div>
  2. </div><div>ITALICS = 00000001</div><div>BOLD = 00000010</div><div>UNDERLINE = 00000100</div>
复制代码


由于积分常数是2的幂,所以可以同时组合两个或多个标志,而不用使用按位或|操作符进行重叠。这允许您同时选择两个或多个标志。例如,

示例
  1. <div>#include <iostream></div><div>using namespace std;</div><div>
  2. </div><div>enum designFlags {</div><div>    BOLD = 1,</div><div>    ITALICS = 2,</div><div>    UNDERLINE = 4</div><div>};</div>
复制代码


  1. <div>int main() </div><div>{</div><div>    int myDesign = BOLD | UNDERLINE; </div><div>
  2. </div><div>        //    00000001</div><div>        //  | 00000100</div><div>        //  ___________</div><div>        //    00000101</div><div>
  3. </div><div>    cout << myDesign;</div><div>
  4. </div><div>    return 0;</div><div>}</div>
复制代码


输出结果

  1. 5
复制代码


当输出为5时,您始终知道会使用粗体(bold) 和 (underline) 下划线。

另外,您可以在要求中添加标志。

  1. <div>if (myDesign & ITALICS) {</div><div>    // 斜体代码</div><div>}</div>
复制代码


在这里,我们在设计中添加了斜体。注意,只有斜体代码写在if语句中。

您无需使用枚举就可以在C ++编程中完成几乎所有任务。但是,它们在某些情况下可能非常方便。这也或许是优秀程序员与更优秀程序员的不同之处。

@小甲鱼
如果觉得有用别忘了:评分!

                               
登录/注册后可看大图



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-7-8 15:10:54 | 显示全部楼层
这是哪本书上的内容?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-8 20:39:00 | 显示全部楼层
网上搜集到的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-1 16:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表