|
|
发表于 2005-11-9 22:53:13
|
显示全部楼层
Post by hkdjining
int main()
{
enum gun
{
one,two,three
}gun1;
gun1=20;
printf("%d",gun1);
}
用gcc编译后运行,竟出现了结果20,我不明白gun的值只能取0,1,2这三个值,为什么不报错?这样的话枚举类型变量就可以任意来赋值了,而定义枚举变量就是为了让它只能在给定的几个值的范围内取值,比如说上面的gun1理论上只能取0,1,2这三个值,如果给gun1赋值为20应该提示错误,各位大侠们,说说你们的看法吧!
哪本书上说的?
C/C++的enum等同于int,只要不超出int的表示范围(有符号或无符号)是不会提示错误的。
枚举一般由相应的枚举符来赋值,如果用整型数值给枚举赋值,程序员应该确保其数值在枚举的范围之内,否则是无定义的。
枚举符可以当做整型常量用。
Post by rickxbx
我认为这是C语言缺乏严格的类型检查导致的
c++ 就做的好一点,你可以试试 g++
C++只提示类型出错,int不允许隐式转换到enum,因为大部分整数值在特定的枚举里都没有对应的表示。 |
|