C语言枚举变量的问题,码就五行,求大神帮下

#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++环境就需要别的操作来辅助了