#include"stdio.h"
int main()
{
enum color {blue,red,black};
enum color w;
for(w=blue;w<=black;w++)
printf("%d",w);
printf("\n");
}
编译的时候,编译器提示w++那里错误了,我猜测w就像一个宏一样,自身无法改变,真能用w+数字 来访问color中的值,但是我在网上找找资料,网上也没对这点说明。求大神帮我解释下吧,我的教材上也是这样写的。。。
1 楼的答案适用于 C++ 环境,C 是没有重载操作符概念的。可以直接将变量 w 定义为 int:
#include"stdio.h"
int main()
{
enum color {blue,red,black};
int w;
for(w=blue;w<=black;w++)
printf("%d",w);
printf("\n");
}
枚举值跟整型做运算时可以隐式转换成整型;但是 w++ ,一元操作,没有转换余地,C 又提供枚举自加的语法定义,自然就错了。
枚举跟宏完全无关,如前所说,更接近一个整型,即每一个枚举值都是一个整数。
C语言环境中可以使用枚举自增,而c++环境就需要别的操作来辅助了