15-用法_检查位的值
15.3.6 用法:检查位的值
前面介绍了如何改变位的值。有时,需要检查某位的值。例如, flags 中 1 号位是否被设置为 1 ?不能这样直接比较 flags 和 MASK :
if (flags == MASK)
puts("Wow!"); /* 不能正常工作 */
这样做即使 flags 的 1 号位为 1 ,其他位的值会导致比较结果为假。因此,必须覆盖 flags 中的其他位,只用 1 号位和 MASK 比较:
if ((flags & MASK) == MASK)
puts("Wow!");
由于按位运算符的优先级比 == 低,所以必须在 flags & MASK 周围加上圆括号。
为了避免信息漏过边界,掩码至少要与其覆盖的值宽度相同。