我的标志位有问题。
我有一个int
保存标志的变量。首先,我为该变量设置了一些标志。稍后我需要检查该变量中设置了多少个标志。但我不知道该怎么做。
要检查是否设置了位值:
int value = VALUE_TO_CHECK | OTHER_VALUE_TO_CHECK;
if ((value & VALUE_TO_CHECK) == VALUE_TO_CHECK)
{
// do something--it was set
}
if ((value & OTHER_VALUE_TO_CHECK) == OTHER_VALUE_TO_CHECK)
{
// also set (if it gets in here, then it was defined in
// value, but it does not guarantee that it was set with
// OR without other values. To guarantee it's only this
// value just use == without bitwise logic)
}
需要注意的是,您不应将检查值设置为 0,除非它代表 All 或 None(并且不要使用按位逻辑进行比较;只需使用value == 0
)因为任何value & 0
始终为 0。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)