通常当比较标志枚举时,我使用以下格式:
(value & flag) == flag;
但有时候我会碰到这个:
(value & flag) != 0;
只是想知道哪个是更好的使用,还是归结为个人喜好?
解决方法
只要标志是一位标志,它们是等效的.如果标志有多个位,
(value & flag) == flag;
是一个逻辑AND(所有位必须匹配)while
(value & flag) != 0;
是一个逻辑OR(任何位必须匹配).