用一个无符号的整形的每一位代表一个任务,1代表任务完成,0代表任务未做;
#include<stdio.h>
#define BIT(x) (1<<(x)) //带参数的宏定义,编译与处理后,
//代码里BIT(0)===(1<<(0))1左移0位
//BIT(1)===(1<<(1))1左移1位
//BIT(2)===(1<<(2))1左移2位
//每左移一位相当于*2,BIT(0)=1,BIT(1)=2,BIT(2)=4。。。
enum Enumtask {
Etask1 = BIT(0),//1
Etask2 = BIT(1),//10
Etask3 = BIT(2),//100
Etask4 = BIT(3),//1000
Etask5 = BIT(4),//10000
Etask6 = BIT(5),//100000
Etask7 = BIT(6),//1000000
Etask8 = BIT(7),//10000000
Etask9 = BIT(8),//100000000
Etask10 = BIT(9),//100000000
};
unsigned int task = 0;//刚开始所有任务都未执行。
int main()
{
if (task & Etask7)//按位与,Etask=1000000,如果task第七位为1,则结果为1,否则结果为0
{
printf("任务7已经做过了\n");
}
else
{
//执行任务7
printf("任务7未完成,执行任务7\n");
task |= Etask7;//标记任务7执行完成
}
return 0;
}