当未对enum中枚举值进行赋值时,默认从0开始逐渐+1
#include <stdio.h>
enum MyEnum
{
a,//0
b,//1
c,//2
d //3
};
int main()
{
MyEnum i = d;
printf("i = %d\n",i);//3
printf("%d\n", a);//0
printf("%d\n", b);//1
printf("%d\n", c);//2
printf("%d\n", d);//3
return 0;
}
当对enum中的枚举值进行赋值后
情况1:
#include <stdio.h>
enum MyEnum
{
a=2,
b,//3
c,//4
d //5
};
int main()
{
MyEnum i = d;
printf("i = %d\n",i);//5
printf("%d\n", a);//2
printf("%d\n", b);//3
printf("%d\n", c);//4
printf("%d\n", d);//5
return 0;
}
情况2:
#include <stdio.h>
enum MyEnum
{
a,//0
b=2,//2
c,//3
d //4
};
int main()
{
MyEnum i = d;
printf("i = %d\n",i);//4
printf("%d\n", a);//0
printf("%d\n", b);//2
printf("%d\n", c);//3
printf("%d\n", d);//4
return 0;
}
情况3:
#include <stdio.h>
enum MyEnum
{
a=2,
b=5,
c,//6
d //7
};
int main()
{
MyEnum i = d;
printf("i = %d\n",i);//7
printf("%d\n", a);//2
printf("%d\n", b);//5
printf("%d\n", c);//6
printf("%d\n", d);//7
return 0;
}
可见:
1、当首位枚举值未进行赋值默认为0
2、若本位枚举值未被赋值,则值为上位枚举值加一
Tip:
1、enum中的值不能写为常量,即
enum MyEnum
{
1,
2,
3
};
2、枚举值是常量,只能在定义过程中赋值
#include <stdio.h>
enum MyEnum
{
a,//0
b,//1
c,//2
d //3
};
int main()
{
MyEnum i = d;
d = 1;//此处将报错,d为常量不能再次赋值。
printf("i = %d\n",i);//3
printf("%d\n", a);//0
printf("%d\n", b);//1
printf("%d\n", c);//2
printf("%d\n", d);//3
return 0;
}