|
蓝森林 http://www.lslnet.com 2006年6月6日 10:18
c++primer里面关于枚举的介绍在c下面不适用吗?
在c++primer中3.8节对枚举的介绍中,
作者说如果用枚举类型做函数的参数,在调用函数输入不是枚举类型中的值时,编译器会报错。
我在一个c程序中为了方便和安全的需要在一个函数中使用了枚举作为参数,但是经过测试,编译器并没有报错。为什么不适用呢 :em16:
[code]
#include <stdio.h>;
#include <stdlib.h>;
enum flag {left, right};
enum flag func(enum flag flag)
{
return flag;
}
int main(int argc, char *argv[])
{
int i;
i=func(2);
printf("i[%d]\n", i);
system("PAUSE");
return 0;
}[/code]
上面的例子是在dev-c++里测试的。编译和运行正常。 :em16: |
c++primer里面关于枚举的介绍在c下面不适用吗?
在C语言中,编译器一般把枚举类型等同于整型。其实这个问题主要还是看编译器是怎么处理的,有的编译器也可能对你上面的程序给出警告。你可以把它理解为“C语言对类型检查不是太严格”。
C++中,严格区分各种类型。枚举和整型之间不能自由转换,否则被视为一种错误,编译器在编译时会指出这种错误。 |
c++primer里面关于枚举的介绍在c下面不适用吗?
我也碰到这类的问题!郁闷 |
c++primer里面关于枚举的介绍在c下面不适用吗?
c++primer
又不是c primer |
| |