C6285

Note

This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here

warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator?

This warning indicates that two constant values, both greater than one, were detected as arguments to a logical-or operation that occurs in a test context. This expression is always TRUE.

Constant values greater than one suggest that the arguments to logical-or could be bit fields. Consider whether a bitwise operator might be a more appropriate operator in this case.

Example

The following code generates this warning:

#include <stdio.h>  
#define     TESTED_VALUE    0x37  
#define     MASK            0xaa  
  
void f()  
{  
  if (TESTED_VALUE || MASK)   
  {  
    puts("(TESTED_VALUE || MASK) True");  
    // code ...  
  }  
  else   
  {  
    puts("(TESTED_VALUE || MASK) False");  
    // code ...  
  }  
}  

To correct this warning, use the following code:

#include <stdio.h>  
#define     TESTED_VALUE    0x37  
#define     MASK            0xaa  
  
void f(int flag)  
{  
  if ((TESTED_VALUE & MASK)== flag)  
  {  
    puts("true");  
    // code ...  
  }  
  else  
  {  
    puts("false");  
    // code ...  
  }  
}  

See Also

Expressions with Binary Operators