C语言练习笔记 ~ 枚举类型
程序员文章站
2022-04-24 11:07:49
...
define 一次只能定义1个常量,如果需要同时定义多个常量,则需要使用枚举。
例1 枚举类型举例
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning(disable:4996)
struct man
{
char name[20];
int age;
int sex;
};
// #define MAN 1 //这样一次只能定义1个常量,如果需要同时定义多个常量,则需要使用枚举
// #define WOMAN 0
enum sex {man, woman};
enum spectrum {red, yellow, green, blue, white, black}; //定义了很多个 int 型常量
int main ()
{
struct man m;
strcpy(m.name, "tom");
m.age = 20;
// m.sex = MAN;
/* enum sex s;
s = man;
m.sex = s; //这三句可以等效为一句 m.sex = man;
*/
m.sex = man;
enum spectrum color;
color = red;
printf("red=%d\n",red);//输出的是red的默认值,默认值是从0开始的
printf("blue=%d\n",blue);//输出的是blue的默认值
return 0;
}
输出结果:
例2 改变默认值
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning(disable:4996)
struct man
{
char name[20];
int age;
int sex;
};
// #define MAN 1 //这样一次只能定义1个常量,如果需要同时定义多个常量,则需要使用枚举
// #define WOMAN 0
enum sex {man, woman};
enum spectrum {red = 100, yellow, green, blue, white, black}; //定义了很多个 int 型常量
int main ()
{
struct man m;
strcpy(m.name, "tom");
m.age = 20;
// m.sex = MAN;
/* enum sex s;
s = man;
m.sex = s; //这三句可以等效为一句 m.sex = man;
*/
m.sex = man;
enum spectrum color;
color = red;
printf("red=%d\n",red);//输出的是red的默认值,默认值是可以改变的
printf("blue=%d\n",blue);//输出的是blue的默认值
return 0;
}
输出结果:
还可以这样改:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning(disable:4996)
struct man
{
char name[20];
int age;
int sex;
};
// #define MAN 1 //这样一次只能定义1个常量,如果需要同时定义多个常量,则需要使用枚举
// #define WOMAN 0
enum sex {man, woman};
enum spectrum {red = 100, yellow = 12, green, blue, white, black}; //定义了很多个 int 型常量
int main ()
{
struct man m;
strcpy(m.name, "tom");
m.age = 20;
// m.sex = MAN;
/* enum sex s;
s = man;
m.sex = s; //这三句可以等效为一句 m.sex = man;
*/
m.sex = man;
enum spectrum color;
color = red;
printf("red=%d\n",red);//输出的是red的默认值,默认值是可以改变的
printf("blue=%d\n",blue);//输出的是blue的默认值
return 0;
}
输出结果:
从上述结果可以看出:没有改变默认的常量从改变的常量开始,+1往后顺延。
注意:枚举是常量,不是变量,不能取地址,也不能出现在等号左边。
上面第一个不能取地址,第2个和第3个可以。
下一篇: 枚举类型