警告 C6235
('non-zero constant' ||'expression') は常に 0 以外の定数です
この警告は、テスト コンテキストで発生する論理 OR 演算の左辺で、1 以外の 0 でない定数値が検出されたことを示します。 結果の式は常に true に評価されるため、論理演算または演算の右側は評価されません。 この言語機能は、"短絡評価" と呼ばれます。
解説
1 以外の 0 でない定数値は、ビットごとの AND 演算子 (&
) が想定されている可能性があることを示します。 この警告は、0 以外の定数が 1 の場合、コード パスを選択的に有効にするために使用されるため、共通のイディオムでは生成されません。 ただし、たとえば、0 以外の定数が 1 に評価された場合に 1+0
生成されます。
コード分析名: NONZEROLOGICALOR
例
次のコードでは、INPUT_TYPE
が 2 であるため、この警告が生成されます。
#define INPUT_TYPE 2
void f(int n)
{
if(INPUT_TYPE || n) //warning C6235 issued
{
puts("Always gets here");
}
else
{
puts("Never gets here");
}
}
この警告を解決するには、次のコードに示すように、ビットごとの AND (&
) 演算子を使用します。
#define INPUT_TYPE 2
void f(int n)
{
if((INPUT_TYPE & n) == 2)
{
puts("bitwise-AND comparison true");
}
else
{
puts("bitwise-AND comparison false");
}
}
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示