读书人

关于位运算 或“|”的一些疑问,该怎么

发布时间: 2012-02-19 19:43:37 作者: rapoo

关于位运算 或“|”的一些疑问
如题,或(or),运算符:|

我看见有的函数是这样使用的:

C/C++ code
xxxxx(FLAG_A | FLAG_B | FLAG_C);

那么,这个函数是如何判断传入的参数包含用 | 隔开的这些选项呢?
难道这些选项的值的二进制形式是这样的:
C/C++ code
#define   FLAG_A  1 /* 000000001 */#define   FLAG_B  2 /* 000000010 */#define   FLAG_C  4 /* 000000100 */#define   FLAG_D  8 /* 000001000 */

或者十进制形式是这样的:
C/C++ code
#define   FLAG_A     1#define   FLAG_B    10#define   FLAG_C   100#define   FLAG_D  1000

之后,函数就判断传入的数值内是否包含这些选项的值,10进制的话,检测每一位上的数是否为1,有则说明有这个选项,否则无这个选项。
但是,2进制怎么判断?

[解决办法]
&啊。
[解决办法]
if(Flag & FLAG_A)//...
if(Flag & FLAG_B)//...


[解决办法]
你说反了,是二进制的才行,10进制的不行,因为|是按位操作的,判断用&
[解决办法]
探讨
如题,或(or),运算符:|

我看见有的函数是这样使用的:
C/C++ code
xxxxx(FLAG_A | FLAG_B | FLAG_C);

那么,这个函数是如何判断传入的参数包含用 | 隔开的这些选项呢?
难道这些选项的值的二进制形式是这样的:
C/C++ code

#define FLAG_A 1 /* 000000001 */
#define FLAG_……

[解决办法]
C C++语言基础,楼主要加紧修行

读书人网 >C语言

热点推荐