三者的性质 ^ 异或运算:相同为0,不同为1 & 与运算:两者为1时为1,有0为0 可以用来作为判断和取消 | 或运算:有1为1 可以通过这个来把参数相加 运算 #define FLAG_DUPLICATE 0x01 // 展开二进制00000001 1 #define FLAG_VISIBLE 0x02 // 展开二进制00000010 2x2 #define FLAG_CANSELECT 0x04 // 展开二进制00000100 3x2 #define FLAG_LABELED 0x08 // 展开二进制00001000 4x2 #define FLAG_BACKGROUND 0x10 // 展开二进制00100000 5x2 #define FLAG_SHOWOUTLINE 0x20 // 展开二进制01000000 6x2 #define FLAG_SHOWATEAGLE 0x40 // 展开二进制10000000 7x2 示例 一个复选框被选中 int nStatus; nStatus = nStatus | FLAG_DUPLICATE; //一个复选框被选中 取消一个复选框 int mask = 0xffffffff ^ FLAG_DUPLICATE;//(把FLAG_DUPLICATE中为"1"的那一位置为0,其它位都为1) nStatus = nStatus & mask; 判断一个复选框是否被选中 if(nStatus & FLAG_DUPLICATE == FLAG_DUPLICATE) cout<<"选中"<<endl; else cout<<"未选中"<<endl;