1

&これで、ビット単位のAND演算子を使用して、DWORD(具体的にはWindowsスタイル)に特定のフラグがあるかどうかを確認する方法がわかりました。これをどのように行いますか:

if (dwMyFlags & dwSomeFlag) {
    // dwMyFlags contains dwSomeFlag
    // ->> How do I remove dwSomeFlag from dwMyFlags?
}

減算しても機能しないことはわかっていますが、DWORDからフラグを削除できる演算子はありますか?

4

3 に答える 3

9

フラグが設定されていることがわかっている場合は、排他的または設定解除を使用できます。

dwMyFlags ^= dwSomeFlag;

フラグの状態が不明な場合は、ビット単位の & を使用し、ビット単位の not ~ を使用する必要があります。

dwMyFlags &= ~dwSomeFlag;
于 2012-10-17T21:18:38.790 に答える
7

&必要なフラグのを使用してビットごとに実行します。

dwMyFlags = dwMyFlags & ~dwSomeFlag;

を使用してこれを省略できます&=

dwMyFlags &= ~dwSomeFlag;
于 2012-10-17T21:12:01.543 に答える
5

AND そのフラグの一部ではないビット:

dwMyFlags &= ~dwSomeFlag;

これは、複数のフラグを削除することにも拡張できます。

dwMyFlags &= ~(dwSomeFlag | dwSomeOtherFlag);

また、ハンガリー語の記譜法は、その使用よりも長生きしています。

于 2012-10-17T21:11:57.783 に答える