C6235

更新:2007 年 11 月

警告 C6235:(<non-zero constant> || <expression>)始终为非零常数

此警告意味着在测试上下文中出现的逻辑或运算的左边检测到 1 以外的非零常数值。将不计算逻辑或运算的右边,因为结果表达式的计算结果始终为 true。这被称作为“短路计算”。

1 以外的非零常数值意味着可能原本打算使用按位与运算符 (&)。如果非零常数为 1,由于使用它可以有选择地启用代码路径,因此通常不会生成此警告。但是如果非零常数的计算结果为 1,如 1+0,则会生成此警告。

示例

在下面的代码中,因为 INPUT_TYPE 为 2,所以会生成此警告:

#define INPUT_TYPE 2
void f(int n)
{
   if(INPUT_TYPE || n) //warning 6235 issued
   {
      puts("Always gets here");
   }
   else
   {
      puts("Never gets here");
   }
}

下面的代码使用按位与 (&) 运算符来更正此警告:

#define INPUT_TYPE 2
void f(int n)
{
   if((INPUT_TYPE & n) == 2)
   {
      puts("bitwise-AND comparison true");
   }
   else
   {
      puts("bitwise-AND comparison false");
   }
}

请参见

参考

C Logical Operators