枚举外面的变量可以赋值吗 (枚举外面的变量是什么)
枚举类型在经常使用中有以下规则:1. 枚举值是常量,不是变量。
不能在程序中用赋值语句再对它赋值。
2. 枚举元素自身由系统定义了一个示意序号的数值,从0开局顺序定义为0,1,2…。
如在weekday中,sun值为0,mon值为1,sat值为6。
只能把枚举值赋予枚举变量,不能把元素的数值间接赋予枚举变量。
如必定要把数值赋予枚举变量,则必定用强迫类型转换。
如:a=(enumweekday)2;特意留意:在VS2010等编译器中,强迫转换格局应为:(weekday)2,假设前面加上了enum,编译时会产生“类型重定义”的失误。
其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于:a=tue;还应该说明的是枚举元素不是字符常量也不是字符串常量,经常使用时不要加单、双引号。
输入结果:1monday2tuesday3wendsday4thursday5friday6saturday7sunday8monday9tuesday10wendsday11thursday12friday13saturday14sunday15monday16tuesday17wendsday18thursday19friday20saturday21sunday22monday23tuesday24wendsday25thursday26friday27saturday28sunday29monday30tuesday3. 假设枚举值与一些主要字抵触,例如:enumcourse{begin,then,end};因为程序有或者经常使用了iostream,并且经常使用了命名空间std,这时假设间接经常使用end启动赋值就有或者产生“不明白”符号的失误。
处置此疑问,有两个方法:(1)定义枚举值时应防止经常使用罕用主要字,可以加前缀启动辨别例如:enumcourse{e_begin,e_then,e_end};(2)可以在枚举值前面添加枚举类型:course::end
