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

聊城网站建设科技公司阿里巴巴国际站官网

聊城网站建设科技公司,阿里巴巴国际站官网,app制作平台源码,wordpress打开页面很慢文章目录参考描述枚举类型枚举类型枚举变量的声明及定义细节枚举常量的默认初始值枚举常量不可被修改赋值运算枚举常量与数据类型为枚举常量指定数据类型可选择的数据类型特殊的 Bool强枚举类型命名冲突强枚举类型参考 项目描述菜鸟教程C 枚举类型详解精通C (第九版…

文章目录

  • 参考
  • 描述
  • 枚举类型
      • 枚举类型
      • 枚举变量的声明及定义
      • 细节
          • 枚举常量的默认初始值
          • 枚举常量不可被修改
          • 赋值
          • 运算
  • 枚举常量与数据类型
      • 为枚举常量指定数据类型
      • 可选择的数据类型
          • 特殊的 Bool
  • 强枚举类型
      • 命名冲突
      • 强枚举类型

参考

项目描述
菜鸟教程C++ 枚举类型详解
精通C++ (第九版)托尼·加迪斯、朱迪·沃尔特斯、戈德弗雷·穆甘达 (著) / 黄刚 等 (译)
搜索引擎Bing

描述

项目描述
操作系统Windows 10 专业版(64位)
g++8.1.0

枚举类型

枚举类型

在 C++ 中,如果一个变量的可能取值为有限个时,你可以使用枚举类型对该变量进行声明。枚举类型是枚举常量的集合,枚举常量即是使用该枚举类型声明的枚举变量所能取得的值。枚举类型并不能为你提供太多的帮助,但能有效地提高程序的可读性及可靠性(安全性)。

  1. 可读性
    枚举常量均使用标识符指代常量(也称字面量,直接在程序中出现的数据),这比在程序中直接给出数据更具有可读性(见名知意)。

  2. 可靠性
    使用常量而不是变量(变量在初始化后能够更改,而常量在初始化后不可更改),可以有效防止数据被有意或无意的更改,提高程序的可靠性。

举个栗子

#include <iostream>
using namespace std;int main(){// 定义一个枚举类型 Weekenum Week{// 为枚举常量赋予初始值SUNDAY = 0,MONDAY = 1,TUESDAY = 2,WEDNESDAY = 3,THURSDAY = 4,FRIDAY = 5,SATURDAY = 6}; // 请注意此处的分号,若是缺少该分号,C++ 将抛出错误// 使用枚举类型 Week 定义一个枚举变量Week today;// 为枚举变量指定一个枚举常量today = SUNDAY;// 将 today 中保存的值输出到执行窗口中cout << today << endl;// 修改枚举变量的值today = WEDNESDAY;// 将 today 中保存的值输出到执行窗口中cout << today << endl;// 暂停执行窗口的执行system("pause");
}

执行结果

0
3
请按任意键继续. . .

其中:

  1. 枚举类型使用关键字 enum 进行定义。
  2. 枚举类型的名称建议使用大驼峰式命名法(也称帕斯卡命名法)进行命名,而使用枚举类型声明的枚举变量则建议使用小驼峰式命名法进行命名。

枚举变量的声明及定义

在声明枚举类型的同时,你可以声明一个或多个枚举变量。对此,请参考如下示例:

#include <iostream>
using namespace std;int main(){enum Week{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}today, tomorrow; today = WEDNESDAY;tomorrow = THURSDAY;cout << today << endl;cout << tomorrow << endl;system("pause");
}

执行结果

3
4
请按任意键继续. . .

除了在定义枚举类型的同时声明一个或多个枚举变量外,你还可以在这个过程中初始化枚举变量。对此,请参考如下示例:

#include <iostream>
using namespace std;int main(){enum Week{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}today, tomorrow; today = WEDNESDAY;tomorrow = THURSDAY;cout << today << endl;cout << tomorrow << endl;system("pause");
}

执行结果

3
4
请按任意键继续. . .

细节

枚举常量的默认初始值

在定义一个枚举类型时,你可以不为枚举常量赋予初始值。C++ 将依据枚举常量声明的顺序为每一个枚举常量赋予一个大于或等于 的整数。对此,请参考如下示例:

#include <iostream>
using namespace std;int main(){// 定义一个枚举类型 Weekenum Week{// 不为枚举常量赋予初始值SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; cout << "Sunday\t\t" << SUNDAY << endl;cout << "Monday\t\t" << MONDAY << endl;cout << "Tuesday\t\t" << TUESDAY << endl;cout << "Wednesday\t" << WEDNESDAY << endl;cout << "Thursday\t" << THURSDAY << endl;cout << "Friday\t\t" << FRIDAY << endl;cout << "Saturday\t" << SATURDAY << endl;system("pause");
}

执行结果

Sunday          0
Monday          1
Tuesday         2
Wednesday       3
Thursday        4
Friday          5
Saturday        6
请按任意键继续. . .

当然,你也可以仅对其中部分枚举常量赋予初始值。其它未被人为指定初始值的枚举常量将按照类似的规则由 C++ 赋予初始值。对此,请参考如下示例:

#include <iostream>
using namespace std;int main(){enum Week{SUNDAY, MONDAY = 9, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; cout << "Sunday\t\t" << SUNDAY << endl;cout << "Tuesday\t\t" << TUESDAY << endl;cout << "Wednesday\t" << WEDNESDAY << endl;system("pause");
}

执行效果

Sunday          0
Tuesday         10
Wednesday       11
请按任意键继续. . .
枚举常量不可被修改

在为枚举常量赋予初始值后,不可修改枚举常量的值。否则,C++ 将抛出错误。

赋值

虽然枚举常量在内存中是以整数的形式存储的,但你不能将整数直接赋予枚举变量。这将引发错误。例如,如下代码将抛出错误。

#include <iostream>
using namespace std;int main(){enum Week{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; Week today = SUNDAY;cout << today << endl;// 下一行语句将引发错误Week tomorrow = 1;cout << tomorrow << endl;system("pause");
}

虽然,不能将整数直接赋予枚举变量,但你可以将枚举常量赋予整型等数据类型所声明的变量或常量。对此,请参考如下示例:

#include <iostream>
using namespace std;int main(){enum Week{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; int num = WEDNESDAY;const float num_f = SATURDAY;cout << num << endl;cout << num_f << endl;system("pause");
}

执行效果

3
6
请按任意键继续. . .
运算

枚举常量能够与其它类型的常量(字面量)发生运算,但将结果赋予枚举变量前需要将结果值转换为枚举变量所属的枚举类型。对此,请参考如下示例:

#include <iostream>
using namespace std;int main(){enum Week{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; // 枚举变量不可接收其它类型的数据。因此,我们需要// 将 SUNDAY + 8 的结果转换为 Week 类型的数据。// 否则,C++ 将抛出错误。Week freedom = (Week)(SUNDAY + 8);cout << freedom << endl;system("pause");
}

执行结果

8
请按任意键继续. . .

枚举常量与数据类型

枚举常量的默认数据类型为 int,我们可以通过如下示例对其加以验证:

#include <iostream>
using namespace std;int main(){enum Week{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; // 输出枚举类型 Week 所占用的内存空间,即单个// 枚举产量所占用的内存空间。cout << sizeof(Week) << endl;system("pause");
}

执行结果

由输出结果可以判断出:
在默认情况下单个枚举常量所占用的内存空间为 四个字节,与整型 int 所占用的内存空间相同。

4
请按任意键继续. . .

为枚举常量指定数据类型

在定义枚举类型时,你可以使用符号 : 来指定枚举常量所使用的数据类型。比如,使用数据类型 char 作为枚举常量的数据类型。对此,请参考如下示例:

#include <iostream>
using namespace std;int main(){// 使用数据类型 char 作为枚举常量的数据类型 enum Week:char{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; // 将枚举常量 TUESDAY 所保存的值输出到执行窗口中cout << TUESDAY << endl;// 将枚举类型 Week 所占用的内存空间输出到执行窗口中cout << sizeof(Week) << endl;system("pause");
}

执行结果

2
1
请按任意键继续. . .

可选择的数据类型

你可以选择使用如下数据类型作为枚举常量使用的数据类型:

  1. Bool(布尔型)
  2. Int(有符号型、无符号型)
  3. Short(有符号型、无符号型)
  4. Long Long(有符号型、无符号型)
  5. Long(有符号型、无符号型)
  6. Char(字符型)
特殊的 Bool

在将数据类型 Bool 作为枚举常量的数据类型时,需要注意以下两点:

  1. 枚举常量的值仅能为 01。否则,C++ 将抛出错误。
  2. 未被人为指定初始值的枚举常量最多为两个(超出两个的话,必有一个枚举常量将被赋予大于 1 的整数)。否则,C++ 将抛出错误。

强枚举类型

命名冲突

C++ 不允许相同作用域内的多个枚举量具有相同的名称,也就是说,在同一作用域内,即使是两个不同的枚举数据类型,也不能定义或使用相同的枚举量名称作为自己的成员。

由于该规则,以下代码在执行过程中将引发错误。

#include <iostream>
using namespace std;int main(){enum Week{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; enum Weekend{// 在同一作用域中使用相同的名称作为// 枚举常量的标识符。SUNDAY, SATURDAY};system("pause");
}

倘若你在不同作用域中使用相同的名称作为枚举常量的标识符将不会引发错误。对此,请参考如下示例:

#include <iostream>
using namespace std;// 在不同作用域中使用相同的名称作为枚举常量的
// 标识符将不会引发错误。
enum Weekend
{SUNDAY, SATURDAY
};int main(){enum Week{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; system("pause");
}

强枚举类型

C++ 11 版本中,官方添加了一个新的类型,即强枚举类型。通过强枚举类型,你将能够避免命名冲突的发生。对此,请参考如下示例:

#include <iostream>
using namespace std;int main(){// 定义强枚举类型 Weekenum class Week{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; // 定义强枚举类型 Weekendenum class Weekend{SUNDAY, SATURDAY};// 使用作用域解析运算符 :: 指定枚举常量所在的作用域Week today = Week::FRIDAY;Weekend tomorrow = Weekend::SATURDAY;// 在将强枚举变量输出的执行窗口前需要先将其转换为 << // 运算符能够识别的数据类型。否则,C++ 将抛出错误。cout << "today\t\t" << (int)today << endl;cout << "tomorrow\t" << (int)tomorrow << endl;system("pause");
}

执行效果

today           5
tomorrow        1
请按任意键继续. . .

注:

强枚举类型仅被 C++ 11 及以上版本所支持。


文章转载自:
http://attach.gcqs.cn
http://triticale.gcqs.cn
http://platonise.gcqs.cn
http://diggings.gcqs.cn
http://tulwar.gcqs.cn
http://tatary.gcqs.cn
http://unheroical.gcqs.cn
http://moneygrubber.gcqs.cn
http://lobeliaceous.gcqs.cn
http://awing.gcqs.cn
http://perdu.gcqs.cn
http://dime.gcqs.cn
http://heinie.gcqs.cn
http://auris.gcqs.cn
http://irascibility.gcqs.cn
http://crustily.gcqs.cn
http://charkha.gcqs.cn
http://liao.gcqs.cn
http://tinkerly.gcqs.cn
http://aecidium.gcqs.cn
http://dermatotherapy.gcqs.cn
http://surfcaster.gcqs.cn
http://uninterruptedly.gcqs.cn
http://petn.gcqs.cn
http://tithonia.gcqs.cn
http://clavecinist.gcqs.cn
http://nebuly.gcqs.cn
http://mousetrap.gcqs.cn
http://sewage.gcqs.cn
http://laminary.gcqs.cn
http://technica.gcqs.cn
http://escabeche.gcqs.cn
http://bellywhop.gcqs.cn
http://prescore.gcqs.cn
http://cart.gcqs.cn
http://creed.gcqs.cn
http://scuba.gcqs.cn
http://cayenne.gcqs.cn
http://genf.gcqs.cn
http://magnetochemistry.gcqs.cn
http://dissyllable.gcqs.cn
http://digenetic.gcqs.cn
http://modulator.gcqs.cn
http://zizit.gcqs.cn
http://pinecone.gcqs.cn
http://chaldaean.gcqs.cn
http://quina.gcqs.cn
http://wickedness.gcqs.cn
http://scissors.gcqs.cn
http://pyrethroid.gcqs.cn
http://desertion.gcqs.cn
http://transketolase.gcqs.cn
http://immigrate.gcqs.cn
http://accouche.gcqs.cn
http://benevolently.gcqs.cn
http://jungly.gcqs.cn
http://tropoelastin.gcqs.cn
http://les.gcqs.cn
http://superfix.gcqs.cn
http://oregon.gcqs.cn
http://ephemeral.gcqs.cn
http://akathisia.gcqs.cn
http://julep.gcqs.cn
http://naissance.gcqs.cn
http://denny.gcqs.cn
http://semifitted.gcqs.cn
http://recamier.gcqs.cn
http://deraign.gcqs.cn
http://bulbaceous.gcqs.cn
http://haptoglobin.gcqs.cn
http://holdup.gcqs.cn
http://spavin.gcqs.cn
http://cordotomy.gcqs.cn
http://manner.gcqs.cn
http://reptiliary.gcqs.cn
http://eastwards.gcqs.cn
http://arith.gcqs.cn
http://gametogony.gcqs.cn
http://unsalable.gcqs.cn
http://serjeantship.gcqs.cn
http://ejido.gcqs.cn
http://cha.gcqs.cn
http://cuprite.gcqs.cn
http://osteogenesis.gcqs.cn
http://septicaemia.gcqs.cn
http://regenerative.gcqs.cn
http://barrel.gcqs.cn
http://doorknob.gcqs.cn
http://unsworn.gcqs.cn
http://ecodoomster.gcqs.cn
http://dag.gcqs.cn
http://segmentalize.gcqs.cn
http://reikjavik.gcqs.cn
http://ovidian.gcqs.cn
http://luxon.gcqs.cn
http://foxe.gcqs.cn
http://collectorship.gcqs.cn
http://hypoproteinemia.gcqs.cn
http://johnsonian.gcqs.cn
http://interlaboratory.gcqs.cn
http://www.15wanjia.com/news/84122.html

相关文章:

  • 有哪些网站可以做兼职公关服务
  • 宁波人流河北网站seo
  • 有好点的网站建设公司吗八百客crm系统登录入口
  • 企业网站内容策划有效的网站推广方式
  • wordpress主题 双站点合理使用说明
  • 湖北响应式网站建设费用sem投放
  • 网站建设相关推荐百度广告推广费用一年多少钱
  • 网站建设中html下载360推广登录平台
  • 揭阳网站建设网站网站建设方案书模板
  • 微商做图王官方网站如何去除痘痘效果好
  • 网站 制作公司上海网站建设费用
  • 太仓网站制作百度灰色关键词排名
  • 网站开发什么课程小红书怎么推广
  • 佛山怎么做网站seo营销怎么做
  • 用自己服务器做网站成年学校培训班
  • 大连软件公司有哪些珠海seo排名收费
  • 手机网站建设用乐云seo定制网站建设推广服务
  • 软件工程考研科目合肥网络seo
  • 腾讯云主机永久免费成都自然排名优化
  • 漳州做网站开发seo 推广教程
  • b2b网站有哪些盈利模式常见的网络推广方式有哪些
  • 旅游网站开发的意义是什么整合营销名词解释
  • 长沙十大景点seo优化排名
  • 凡科论坛网站制作东莞优化网站制作
  • 全国注册室内设计师网网站关键词seo排名
  • 爱站网长尾关键词搜索宁波seo网络优化公司
  • 各大网站rss地址seo关键词优化推广
  • 做网站好看的旅行背景图片学营销app哪个更好
  • 凡科2网站需要备案吗口碑营销推广
  • wordpress插件影响网站谷歌seo和百度区别