警告 C6317
正しくない演算子: 論理非 (!) は 1s 補数 (~) と交換できません
解説
この警告は、論理 NOT (!
) が、ビット フラグとなる可能性のある定数に適用されていることを示しています。 論理非の結果はブール値です。ビットごとの演算子と (&
) 演算子をブール値に適用するのは正しくありません。 フラグを反転するには、1 の補数 (~
) 演算子を使用します。
コード分析名: NOTNOTCOMPLEMENT
例
この警告が発生するコード例を次に示します。
#define FLAGS 0x4004
void f(int i)
{
if (i & !FLAGS) // warning
{
// code
}
}
この警告を解決するには、次のコードを使用します。
#define FLAGS 0x4004
void f(int i)
{
if (i & ~FLAGS)
{
// code
}
}
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示