&& 是逻辑与,而 | 是位运算符。
a && b
当两个操作数都计算为true时,计算为true。由于标志几乎总是大于 1 的数字,因此该表达式总是计算为true。
接受位掩码的函数如何工作
他们指定常量
请注意,这些常数必须是 2 的幂:
FLAG_INT1 = 1
FLAG_INT2 = 2
FLAG_INT3 = 4
FLAG_INT4 = 8
您调用组合一些标志的函数
myFunction(FLAG_INT1 | FLAG_INT3)
这导致按位或运算:
0001
OR 0100
=======
0101
一个(或两个)操作数中的设置位( 1 )也将导致结果中的设置位(1 )。
该函数在内部检查每个标志
这需要按位与运算:
0101
AND 0001 // check for FLAG_INT1
========
0001 // true
0101
AND 0010 // check for FLAG_INT2
========
0000 // false
0101
AND 0100 // check for FLAG_INT3
========
0100 // true
按位与要求两个操作数在位置 X 处都有一个设置位 ( 1 ),以便在位置 X 的结果中产生一个设置位 ( 1 )。
维基百科也有一篇关于常见位运算符的好文章:http ://en.wikipedia.org/wiki/Bitwise_operation