enum 设计的初衷是好的,像
enum colorbase{red = 0xff0000, green =0xff00, blue=0xff};
它定义了一个整型,且这个整型比正常的 int 的取值范围小,因为三基色只有三个值. 用枚举很合适.
但我们对 enum 类型的变量赋值时,C 编译器又不做类型检查(肯定是 C 标准没要求):
enum colorbase x;
x = red; //正确
x = 0; //也正确 ?!
那 enum 的意义何在?仅仅是增加一点代码可读性?用它当然是想让编译器帮着检查啊.
c++对 enum 的实现就很让人满意,上面的 x=0, g++会报错:
error: invalid conversion from ‘ int ’ to ‘ colorbase ’
我对 C 的 enum 好奇很久了,对 C++又不熟,今天是偶然发现 C++的实现正合我意,赶紧发帖子唠叨两句...哎,其实我用过一阵子 C++, 其它都还好,就是受不了 void *赋值给指针时还要显式的做类型转换,不然大概早切换过去了.
enum colorbase{red = 0xff0000, green =0xff00, blue=0xff};
它定义了一个整型,且这个整型比正常的 int 的取值范围小,因为三基色只有三个值. 用枚举很合适.
但我们对 enum 类型的变量赋值时,C 编译器又不做类型检查(肯定是 C 标准没要求):
enum colorbase x;
x = red; //正确
x = 0; //也正确 ?!
那 enum 的意义何在?仅仅是增加一点代码可读性?用它当然是想让编译器帮着检查啊.
c++对 enum 的实现就很让人满意,上面的 x=0, g++会报错:
error: invalid conversion from ‘ int ’ to ‘ colorbase ’
我对 C 的 enum 好奇很久了,对 C++又不熟,今天是偶然发现 C++的实现正合我意,赶紧发帖子唠叨两句...哎,其实我用过一阵子 C++, 其它都还好,就是受不了 void *赋值给指针时还要显式的做类型转换,不然大概早切换过去了.
