电商网站开发可行分析,亲子网 网站正在建设中,咸阳免费做网站公司,购物网站 购物车界面如何做一、枚举类型的声明 枚举顾名思义就是一一列举。我们可以把可能的取值一一列举。比如我们现实生活中#xff1a; 星期一到星期日是有限的7天#xff0c;可以一一列举 #xff1b;性别有#xff1a;男、女、保密#xff0c;也可以一一列举 #xff1b;月份有12个月#x…一、枚举类型的声明 枚举顾名思义就是一一列举。我们可以把可能的取值一一列举。比如我们现实生活中 星期一到星期日是有限的7天可以一一列举 性别有男、女、保密也可以一一列举 月份有12个月也可以一一列举 。 这些数据的表示就可以使用枚举了。 enum Day//星期
{Mon,Tues,Wed,Thur,Fri,Sat,Sun
};
enum Sex//性别
{MALE,FEMALE,SECRET
}
enum Color//颜⾊
{RED,GREEN,BLUE
}; 以上定义的 enum Day enum Sex enum Color 都是枚举类型。{}中的内容是枚举类型的可能取值也叫枚举常量 。这些可能取值都是有值的默认从0开始依次递增1当然在声明枚举类型的时候也可以赋初值。 #include stdio.h
enum Day//星期
{Mon,Tues,Wed,Thur,Fri,Sat,Sun
};
int main()
{printf(%d\n, Mon);printf(%d\n, Tues);printf(%d\n, Wed);printf(%d\n, Thur);printf(%d\n, Fri);printf(%d\n, Sat);printf(%d\n, Sun);return 0;
} 上面展示的就是枚举常量默认的取值从0开始然后不断往后加1。 #include stdio.h
enum Color//颜色
{RED 2,GREEN 4,BLUE 8
};
int main()
{printf(%d\n, RED);printf(%d\n, GREEN);printf(%d\n, BLUE);return 0;
} 我们也可以在声明中通过直接初始化枚举常量。当然还有一种情况我们可以和只初始化其中几个枚举常量后面的枚举常量都会根据其前面的值加1递推。 #include stdio.h
enum Color//颜色
{RED 2,GREEN 4,BLUE
};
int main()
{printf(%d\n, RED);printf(%d\n, GREEN);printf(%d\n, BLUE);return 0;
} 二、枚举类型的优点 我们使用 #define 就可以 定义常量为什么非要使用枚举 其实枚举又有以下几个优点 1.增加代码的可读性和可维护性 2.和#define定义的标识符比较枚举有类型检查更加严谨 3.便于调试预处理阶段会删除 #define 定义的符号 4.使用方便一次可以定义多个常量 5.枚举常量是遵循作用域规则的枚举声明在函数内只能在函数内使用 三、枚举类型的使用 #include stdio.h
enum Color//颜色
{RED 1,GREEN 2,BLUE 4
};
int main()
{enum Color clr GREEN;//使用枚举常量给枚举变量赋值return 0;
} 枚举类型是一种自定义类型它的定义和其他类型的变量类似在上图的代码中clr就是创建出的一个枚举变量。如图我们可以将枚举常量赋值给枚举变量。那我们是否可以拿整数直接给枚举变量赋值呢这个做法在C语言中是可以的但是在C是不行的因为C的类型检查会比较严格。说了这么多其实还是没能看出枚举的作用在下面进行一个演示我们之前在实现简易计算器的时候会这样来实现那我们能不能使用枚举来对其进行优化呢 #includestdio.h
void menu()
{printf(***0.exit***\n);printf(***1.add****\n);printf(***2.sub****\n);printf(***3.mul****\n);printf(***4.div****\n);printf(请输入...\n);
}
int add(int x, int y)
{return x y;
}
int sub(int x, int y)
{return x - y;
}
int mul(int x, int y)
{return x * y;
}
int div(int x, int y)
{return x / y;
}
void is(int(*p)(int, int))
{int a, b;printf(请输入两个操作数...\n);scanf(%d%d, a, b);printf(结果是%d\n, p(a, b));
}
int main()
{int n;int(*p[5])(int, int) { 0,add,sub,mul,div };while (1){menu();scanf(%d, n);if (n 0 n 5){switch (n){case 1:{is(add);break;}case 2:{is(sub);break;}case 3:{is(mul);break;}case 4:{is(div);break;}}}else if (n 0){printf(退出计算器\n);break;}elseprintf(输入有误\n);}return 0;
} 进行如下的改造我们就可以在选择语句选择函数时清楚地知道调用的是什么函数这样就增加了代码的可读性。 #includestdio.h
void menu()
{printf(***0.exit***\n);printf(***1.add****\n);printf(***2.sub****\n);printf(***3.mul****\n);printf(***4.div****\n);printf(请输入...\n);
}
enum CAS
{EXIT,ADD,SUB,MUL,DIV
};
int add(int x, int y)
{return x y;
}
int sub(int x, int y)
{return x - y;
}
int mul(int x, int y)
{return x * y;
}
int div(int x, int y)
{return x / y;
}
void is(int(*p)(int, int))
{int a, b;printf(请输入两个操作数...\n);scanf(%d%d, a, b);printf(结果是%d\n, p(a, b));
}
int main()
{int n;int(*p[5])(int, int) { 0,add,sub,mul,div };while (1){menu();scanf(%d, n);if (n 0 n 5){switch (n){case ADD:{is(add);break;}case SUB:{is(sub);break;}case MUL:{is(mul);break;}case DIV:{is(div);break;}}}else if (n EXIT){printf(退出计算器\n);break;}elseprintf(输入有误\n);}return 0;
}