永发信息网

C++中枚举最多可以有多少个值?

答案:3  悬赏:0  手机版
解决时间 2021-02-05 17:24
  • 提问者网友:容嬷嬷拿针来
  • 2021-02-05 04:05
一楼你好,你说那就是可以枚举无数个了,没有上限?
最佳答案
  • 五星知识达人网友:洒脱疯子
  • 2021-02-05 05:24
如果某个枚举中所有枚举子的值均非负,该枚举的表示范围就是[0:2^k-1],其中2^k是能使所有枚举子都位于此范围内的最小的2的幂;如果存在负的枚举值,该枚举的取值范围就是[-2^k,2^k-1].例如:
enum e1 {dark, light}; //范围0:1
enum e3 {min = -10, max = 1000}; //范围-1024:1023
全部回答
  • 1楼网友:纵马山川剑自提
  • 2021-02-05 07:25
我无法想象你一个程序里面写了上千万个枚举符号后是怎么使用的 如果一组枚举符号内容多到无法记住,那么又有什么意义呢?
  • 2楼网友:猎心人
  • 2021-02-05 06:07
一、类型定义 类型定义的语法格式: type <标识符1>=<类型1>; <标识符1>=<类型1>; …… <标识符n>=<类型n>; 二、枚举类型 通过预定义列出所有值的标识符来定义一个有序集合,这些值的次序和枚举类型说明中的标识符的次序识一致的。枚举类型的形式:(标识符1,……,标识符n) 例如: type daystype=(sunday,monday,tuesday,wednesday,thursday,friday,saturday) 枚举元素只能是标识符,而不能是数值常量或字符常量。例如以下的定义是错误的: type daystype=('sun','mon','tue','wed','thu','fri','sat') 枚举元素是标识符,不要把作为枚举元素的标识符视作变量名,它不能被赋值。同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。例如以下的定义是错误的: type daytype1=(monday,tuesday); daytype2=(monday,wednesday); 可以将枚举类型的定义和变量的定义结合在一起。例如:var a:(monday,tuesday,sunday) 枚举类型属于顺序类型。根据定义类型时各枚举元素的排列顺序确定它们的序列,序列号从0开始 例如:已经定义daystype ord(sunday)=0,succ(sunday)=monday,pred(friday)=thursday 但是枚举类型中的第一个元素没有前趋,最后一个元素没有后继。turbo pascal不允许直接读写枚举值,所以枚举值的输出常用case语句间接的输出。枚举值的输入,则要一一判断读入字符是否是枚举类型的标识符。若是才能赋给枚举变量,否则就会出错。 例如:枚举值的输出 case day of sunday:write('sunday'); monday:write('monday'); tuesday:write('tuesday'); wednesday:write('wednesday'); thursday:write('thursday'); friday:write('friday'); saturday:write('saturday'); end; 三、子界类型 子界类型是由整型、字符型、枚举型、布尔型的两个常量指定该类型的值域区间。子界类型的形式: 常量..常量 两个常量必须是同一种顺序类型。例如:a..b,要求a<=b 例如: type a=1..3; b='a'..'d'; 一个子界类型继承它的常量类型的运算符和标准函数,常量类型相容的不同子界类型可以混合运算,可以赋值。可以将子界类型的定义和变量的定义结合在一起。例如:var a:1..9 例 按月、日、年顺序读入一日期,输出该日期是这一年中的第几天。 program date; var year:0..2010; month,i:1..12; day:1..31; dayth:integer; begin read(month,day,year); dyath:=0; for i:=1 to month-1 do case i of 1,3,5,7,8,10,12:dayth:=dayth+31; 2:if ((year mod 4=0)and(year mod 100<>0)or(year mod 400 =0) then dayth:=dayth+29 else dayth=:=dayth+28; 4,6,9,11:dayth:=dayth+30; end; dayth:=dayth+day; writeln(dayth) end. 四、类型相容和赋值相容 1.类型相容性 类型相容是对参加同一运算的两个对象的类型要求。设有两个变量,如果满足下列条件之一,就说这两个变量的类型相容。 (1)两个变量的类型相同 a.两个变量被同一类型说明。 例如:var a,b:1..30; b.两个变量的类型是同一类型标识符。 例如:var a:1..30; b:1..30; c.两个变量的类型是不同的类型标识符,但在类型定义中已经说明两个标识符相同。 例如:type date=1..100; range=date; var m:data;n:range; (2)一个变量的类型是另一个变量的子界。 (3)两个变量的类型都是同一基类型的子界。 (4)两个变量的类型是基类型相容的集合类型。 (5)两个变量的类型是成分相同的串类型。 2.赋值相容性 赋值相容是对赋值操作的两个对象的类型要求。设赋值语句“:=”左边的变量类型为t,右边表达式的类型为e,若类型t和类型e满足下列条件之一,则称他们是赋值相容的。 (1)t和e是相同的类型,而且类型不是文件类型,也不是具有文件类成分的构造类型。 (2)t是实型,而e是整型或整型的子界。 (3)t和e是类型相容的顺序类型,并且e的值不超出t所定义的值的范围 (4)t和e是类型相容的集合类型,并且e的值不超出t所定义的值的范围 (5)t和e是类型相容的串类型。 当t和e是顺序类型或都是集合类型时,不仅要求这两个类型是相容的,而且要求e的值不超出t所定义的值的范围;否则将产生类型溢出,而这种错误只能在你运行程序时进行检查,因此你必须要避免不发生这种错误。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯