我不明白OR语句在这个代码示例中做了什么。
DE.Properties("UserAccountControl").Value = CInt(DE.Properties("UserAccountControl").Value) Or AccountOptionsEnum.UF_ACCOUNTDISABLE
DE.Properties(“UserAccountControl”)。值表示小数。
枚举是整数。
我知道这是代码用于停用Active Directory中的用户,但我不明白“OR”在这里是如何工作的。
由于
答案 0 :(得分:5)
or是一个按位操作。 C = A or B
确保设置C中的所有位,这些位在B中的或中设置。
示例:
01001001
or 00011000
--------
01011001
AccountOptionsEnum.UF_ACCOUNTDISABLE
可能是2^x
形式的值,这意味着只设置了一个位。我们假设它是右边的第四位:
00001000 = UF_ACCOUNTDISABLE
操作X = X or UF_ACCOUNTDISABLE
确保在X中设置第四个位。如果之前已设置,则没有任何变化:
00011100 old X
or 00001000 UF_ACCOUNTDISABLE
--------
00011100 new X
如果尚未设置,则将设置:
00010100 old X
or 00001000 UF_ACCOUNTDISABLE
--------
00011100 new X
基本上,通常使用以下按位操作:
X = X or FLAG ' sets FLAG in X
X = X and not FLAG ' removes FLAG from X
X = X xor FLAG ' toggles FLAG in X
if (X and FLAG) <> 0 ' checks if FLAG is set in X