1. 枚举变量的值的问题。默认情况下枚举变量与枚举变量表中的第一个常量的值一样
如果是声明的全局变量或者是静态的局部变量的话,没初始化,他就是0但这个0跟枚举的第一个值是没有关系的,是系统默认设的一个值给他,如果你设的是普通的局部变量,最好给他设个初始值,不然程序可能会出现问题。你可以这样测试:#include "stdio.h"typedef enum{ KeyScanState_0 = 0x01,//第一个值不设为0,设为1 KeyScanState_1 = 0x01, KeyScanState_2 = 0x02,}KeyScanState_Typedef;KeyScanState_Typedef KeyScanState;//声明成全局变量int main(){ printf("%d\n",KeyScanState);}你会发现,他输出是0,不是枚举的第一个值1,所以说,不初始化他的值跟枚举值没有关系,因为枚举变量实际上是当成整型数来处理的,全局变量和静态局部变量(加static修饰)默认设为0,
2. 如何从文本文件中读取值来初始化一个枚举类型
请在c:\下建立Caption.txt文本文件并输入内容,单击窗体实现功能:Private Sub Form_Click() Dim Str As String Open "c:\Caption.txt" For Input As #1 Line Input #1, Str Close #1 Label1.Caption = LblEnd SubPrivate Sub Form_Load() Label1.Caption = "请单击窗体!" Label1.FontSize = 20End Sub 我可以帮助你,你先设置我最佳答案后,我网络Hii教你。你的串号我已经记下,采纳后我会帮你制作
3. java建了一个enum,怎么初始化
估计你是不知道枚举的含义吧,一个枚举标量定义的时候就有几个值与其对应,说版明这个变量可权取值的集中可能,如你的方向,可取值L,LU,U,RU等。如果定义一个空的枚举值当然就是没有用的。使用的时候,直接Direction.L即可;望满意~~
4. 枚举变量未赋初值,其默认的值是多少
枚举变量未分配初始值。默认情况下,第一个枚举成员的默认值为“0”,后续枚专举成员值属为前一个枚举成员的值(按文本顺序)加一。但是,其值必须在基础类型可以表示的值范围内;
枚举类型,通过预定义列出所有值的标识符来定义有序集,其顺序与枚举类型描述中的标识符顺序一致。枚举类型的形式:(标识符1,…,标识符n)。
枚举元素只能是标识符,而不是数字常量或字符常量。枚举在C/C++/c#中,是一个被命名的整型常数的集合, 枚举在日常生活中很常见。例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,SATURDAY,就是一个枚举。
(4)枚举值根据配置文件初始化扩展阅读
使用枚举类型注意:
枚举中每个成员(标识符)结束符是"," 不是";", 最后一个成员可省略","。
初始化时可以赋负数, 以后的标识符仍依次加1。
枚举变量只能取枚举说明结构中的某个标识符常量。
5. mysql怎么获取数据表字段enum类型的默认值
enum有优点。但个人觉得。。。缺点更多,客观的讲:优点主要是在建数据 库的回时候就可以把一些值答给规范好。缺点是。。enum不适合PHP。主要是PHP是弱类型,如:你insert into ….. set a= 1,你没法知道你是想 a= '1' 还是 a= 1(a='1'是插入值1,a=1是插入enum的第一个值,尤其php弱类型的,如果int的,很少有人在sql里加双引号。),这是PHP和mysql 在使用enum 最大的问题。所以。。安心点啦。干脆点直接tinyin
6. java中的枚举定义中的枚举常量后面如果没有括号初始化,而枚举常量又是对象实例,那从对象实例角度来说,
没写定值,就按顺序从头到尾递增
7. 请大神指点:应用程序端该如何处理枚举类型的数据,百分悬赏!
1、可以从数据库中读取,但最好是写成配置文件的形式。2、如果写成配置文件的话,你判断的时候可以从配置文件中读取,以序号的形式,可以使你不用修改程序,只修改配置文件的方式达到目的。3、从这一点看,我强烈建议你用配置文件的方式,程序中读取配置文件来解决问题。
8. mysql中enum类型怎么设置
根据用户定义的枚举值与分片节点映射文件,直接定位目标分片。
用户在rule.xml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表
在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来,直接查映射表得到分片编号
与MyCat的类似分片算法对比
中间件
DBLE
MyCat
分片算法种类 enum 分区算法 分片枚举
两种中间件的枚举分片算法使用上无差别。
开发注意点
【分片索引】1. 整型数字(可以为负数)或字符串((不含=和换行符)
【分片索引】2. 枚举值之间不能重复
Male=0Male=1
或者
123=1123=2
会导致分片策略加载出错
【分片索引】3. 不同枚举值可以映射到同一个分片上
Mr=0Mrs=1Miss=1Ms=1123=0
运维注意点
【扩容】1. 增加枚举值无需数据再平衡
【扩容】2. 增加一个枚举值的分片数量数时,需要对局部数据进行迁移
【缩容】1. 减少枚举值需要数据再平衡
【缩容】2. 减少一个枚举值的分片数量数时,需要对局部数据进行迁移
配置注意点
【配置项】1. 在 rule.xml 中,可配置项为<property name="defaultNode"> 、<property name="mapFile"> 和 <property name="type">
【配置项】2. 在 rule.xml 中配置<property name="defaultNode">标签,非必须配置项,不配置该项的话,用户的分片索引值没落在 mapFile 定义的范围时,DBLE 会报错;若需要配置,必须为非负整数,用户的分片索引值没落在 mapFile 定义的范围时,DBLE 会路由至这个值的 MySQL 分片
【配置项】3. 在 rule.xml 中配置 <property name="mapFile">标签,范围映射文件的路径:若在映射文件在 DBLE_HOME/conf 或其中,则可以使用相对路径的形式配置,例如,映射文件是 DBLE_HOME/conf/map/table_map.txt 时,配置值就可以简写为 map/table_map.txt;映射文件在 DBLE_HOME/conf 目录以外时,需要使用绝对路径,但这种做法需要考虑用户权限等问题,因此不建议把映射文件放在 DBLE_HOME/conf 外。
【配置项】4. 编辑 mapFile 所配置的文件
记录格式为:<枚举值>=<分片编号>
枚举值可以是整型数字,或任意字符(除了=和换行符),分片编号必须是非负整型数字,记录之间以换行分隔,一行仅能有一条记录,枚举值不能够是“DEFAULT_NODE”这个字符串,允许以“//”和“#”在行首来注释该行
【配置项】5. 在 rule.xml 中配置 <property name="type">标签;type 必须为整型;取值为 0 时,mapFile 的<枚举值>必须为整型;取值为非 0 时,mapFile 的<枚举值>可以是任意字符(除了=和换行符)
9. 如何在构造函数中初始化枚举类型的成员
#include using namespace std; class A { int a,b; public: A(); void print(); }; A::A():a(1),b(2){} //该构造函数直接用初始表列表在类中显式地赋值了 void A::print(){ cout
10. java,求高手讲解一下一个枚举的例子
结果:Mr. John Doe转的。枚举是一个特殊的类。枚举类型是JDK5.0的新特征 。Sun引进了一个全新的关键字enum来定义一个枚举类 。下面就是一个典型枚举类型的定义:Java代码: public enum Color{ RED,BLUE,BLACK,YELLOW,GREEN } 显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类 。 而这些类都是类库中Enum类的子类(java.lang.Enum) 。它们继承了这个Enum中的许多有用的方法 。我们对代码编译之后发现,编译器将enum类型单独编译成了一个字节码文件:Color.class 。Color字节码代码 final enum hr.test.Color { // 所有的枚举值都是类静态常量 public static final enum hr.test.Color RED; public static final enum hr.test.Color BLUE; public static final enum hr.test.Color BLACK; public static final enum hr.test.Color YELLOW; public static final enum hr.test.Color GREEN; private static final synthetic hr.test.Color〔〕 ENUM$VALUES; // 初始化过程,对枚举类的所有枚举值对象进行第一次初始化 static { 0 new hr.test.Color 〔1〕 3 p 4 ldc 〔16〕 //把枚举值字符串“RED”压入操作数栈 6 iconst_0 // 把整型值0压入操作数栈 7 invokespecial hr.test.Color(java.lang.String, int) 〔17〕 //调用Color类的私有构造器创建Color对象RED 10 putstatic hr.test.Color.RED : hr.test.Color 〔21〕 //将枚举对象赋给Color的静态常量RED 。 。.. 。.. 。.. 枚举对象BLUE等与上同 102 return }; // 私有构造器,外部不可能动态创建一个枚举类对象(也就是不可能动态创建一个枚举值) 。 private Color(java.lang.String arg0, int arg1){ // 调用父类Enum的受保护构造器创建一个枚举对象 3 invokespecial java.lang.Enum(java.lang.String, int) 〔38〕 }; public static hr.test.Color〔〕 values(); // 实现Enum类的抽象方法 public static hr.test.Color valueOf(java.lang.String arg0); } 下面我们就详细介绍enum定义的枚举类的特征及其用法 。(后面均用Color举例)1、Color枚举类就是class,而且是一个不可以被继承的final类 。其枚举值(RED,BLUE. 。.)都是Color类型的类静态常量, 我们可以通过下面的方式来得到Color枚举类的一个实例: Color c=Color.RED; 注意:这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写 。2、即然枚举类是class,当然在枚举类型中有构造器,方法和数据域 。但是,枚举类的构造器有很大的不同:(1) 构造器只是在构造枚举值的时候被调用 。Java代码: enum Color{ RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0); //构造枚举值,比如RED(255,0,0) private Color(int rv,int gv,int bv){ this.redValue=rv; this.greenValue=gv; this.blueValue=bv; } public String toString(){ //覆盖了父类Enum的toString() return super.toString()+“(”+redValue+“,”+greenValue+“,”+blueValue+“)”; } private int redValue; //自定义数据域,private为了封装 。 private int greenValue; private int blueValue; } (2) 构造器只能私有private,绝对不允许有public构造器 。 这样可以保证外部代码无法新构造枚举类的实例 。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已 。 但枚举类的方法和数据域可以允许外部访问 。Java代码: public static void main(String args〔〕) { // Color colors=new Color(100,200,300); //wrong Color color=Color.RED; System.out.println(color); // 调用了toString()方法 } 3、所有枚举类都继承了Enum的方法,下面我们详细介绍这些方法 。(1) ordinal()方法: 返回枚举值在枚举类种的顺序 。这个顺序根据枚举值声明的顺序而定 。 Color.RED.ordinal(); //返回结果:0 Color.BLUE.ordinal(); //返回结果:1 (2) compareTo()方法: Enum实现了java.lang.Comparable接口,因此可以比较象与指定对象的顺序 。Enum中的compareTo返回的是两个枚举值的顺序之差 。当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常 。(具体可见源代码) Color.RED.compareTo(Color.BLUE); //返回结果 -1 (3) values()方法: 静态方法,返回一个包含全部枚举值的数组 。 Color〔〕 colors=Color.values(); for(Color c:colors){ System.out.print(c+“,”); }//返回结果:RED,BLUE,BLACK YELLOW,GREEN, (4) toString()方法: 返回枚举常量的名称 。 Color c=Color.RED; System.out.println(c);//返回结果: RED (5) valueOf()方法: 这个方法和toString方法是相对应的,返回带指定名称的指定枚举类型的枚举常量 。 Color.valueOf(“BLUE”); //返回结果: Color.BLUE (6) equals()方法: 比较两个枚举类对象的引用 。Java代码: //JDK源代码: public final boolean equals(Object other) { return this==other; } 4、枚举类可以在switch语句中使用 。Java代码: Color color=Color.RED; switch(color){ case RED: System.out.println(“it‘s red”);break; case BLUE: System.out.println(“it’s blue”);break; case BLACK: System.out.println(“it‘s blue”);break; }