问题描述
总计6个按键,判断是否全部按完,通过与或操作完成
代码实现
#include <stdio.h>
#include <stdlib.h>
#define KEY_SUM (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5)
#define KEY_1 (1<<0)
#define KEY_2 (1<<1)
#define KEY_3 (1<<2)
#define KEY_4 (1<<3)
#define KEY_5 (1<<4)
#define KEY_6 (1<<5)
int main(int argc,char *argv[])
{
int value = KEY_SUM
value &= ~KEY_6;
printf("value = %d\n",value);
return 0;
}
每按下一个按键,value值进行置位一次,全部按完之后, value 会变为0 ; 这里遇到的问题是:
#include <stdio.h>
#include <stdlib.h>
#define KEY_SUM 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5
#define KEY_1 1<<0
#define KEY_2 1<<1
#define KEY_3 1<<2
#define KEY_4 1<<3
#define KEY_5 1<<4
#define KEY_6 1<<5
int main(int argc,char *argv[])
{
int value = KEY_SUM
value &= ~KEY_6;
printf("value = %d\n",value);
return 0;
}
宏定义不加括号情况下, value 一直为0. 原因令我不解, 直到请教同事才发现问题: