小甲鱼 P52 枚举类型enum
localtime 函数---获取当前的本地时间和日期
其实lovaltime 函数是将一个time_t类型的值转换成具体的本地时间和日期,所以需要先使用time函数来返回表示当前时间的time_t。
localtime的返回值是指向tm结构体的指针。
struct tm
{
int tm_sec; /* 秒,范围为0~59,60的话表示闰秒 */
inr tm_min; /* 分,范围是0~59 */
int tm_hour; /* 时,范围是0~23 */
int tm_mday; /* 一个月中的第几天,范围是1~31 */
int tm_mon; /* 一年中的第几个月,范围是0~11 */
int tm_year; /* 自1990年往后的第几年,范围是1990- */
int tm_wday; /* 星期几,自星期天开始计算,范围是0~6 */
int tm_yday; /* 一年中的第几天,范围是0~365 */
int tm_isdst; /* 指定日光节约时间是否生效。正数表示生效,0表示不生效 */
}
#include <stdio.h>
#include <time.h>
#define SUN 0
#define MON 1
#define TUE 2
#define WED 3
#define THU 4
#define FRI 5
#define SAT 6
int main()
{
struct tm *p;//包含了当地时间和日期
time_t t;//无符号整形
time(&t);//表示当前的秒数(1970-1-1到这时刻的秒数)
p = localtime(&t);//获取当前的本地时间和日期
switch(p->tm_wday)//tm_wday:星期几,自星期天开始计算,范围0~6
{
case MON:
case TUE:
case WED:
case THU:
case FRI:
printf("干活!T_T\n");
break;
case SAT:
case SUN:
printf("放假!^_^\n");
break;
default:
printf("Error!\n");
}
return 0;
return 0;
}
枚举类型---提高程序的可读性
如果一个变量只有几种可能的值,那么就可以将其定义为枚举类型。
声明枚举类型:
enum 枚举类型名称 {枚举值名称,枚举值名称...};
定义枚举变量
enum 枚举类型名称 枚举变量1,枚举变量2;
#include <stdio.h>
#include <time.h>
int main(void)
{
//枚举常量,从0开始定义,sun=0, mon=1
enum Week {sun, mon, tue, wed, thu, fri, sat};//枚举常量
enum Week today;//枚举变量
struct tm *p;
time_t t;
time(&t);
p = localtime(&t);
today = (enum Week)p->tm_wday;//星期几
switch (today)
{
case mon:
case tue:
case wed:
case thu:
case fri:
printf("干活!T_T\n");
break;
case sat:
case sun:
printf("放假!^_^\n");
break;
default:
printf("Error!\n");
}
return 0;
}
不希望从0作为起点
#include <stdio.h>
int main(void)
{
enum Color {red, green, blue = 10, yellow};
enum Color rgb;
printf("red = %d\n", red);
printf("green = %d\n", green);
printf("blue = %d\n", blue);
printf("yellow = %d\n", yellow);
//red = 101;//错误,一确定下来,就是常量,无法修改
return 0;
}