﻿# V602\. The '<' operator should probably be replaced with '<<'\. Consider inspecting this expression\.

The analyzer has detected a potential error that may be caused by a misprint\. It is highly probable that the '<<' operator must be used instead of  '<' in an expression\.

Consider the following code sample\.

```cpp
void Foo(unsigned nXNegYNegZNeg, unsigned nXNegYNegZPos,
         unsigned nXNegYPosZNeg, unsigned nXNegYPosZPos)
{
  unsigned m_nIVSampleDirBitmask =
    (1 << nXNegYNegZNeg) | (1 <  nXNegYNegZPos) |
    (1 << nXNegYPosZNeg) | (1 << nXNegYPosZPos);
  ...
}
```

The code contains an error, since it is the '<' operator that is written by accident in the expression\. This is the correct code:

```cpp
unsigned m_nIVSampleDirBitmask =
  (1 << nXNegYNegZNeg) | (1 << nXNegYNegZPos) |
  (1 << nXNegYPosZNeg) | (1 << nXNegYPosZPos);
```

Note\.

The analyzer considers comparisons \('<', '\>'\) odd if their result is used in binary operations such as '&', '\|' or '^'\. The diagnostic is more complex but we hope you understand the point in general\. On finding such expressions the analyzer emits the V602 warning\.

If the analyzer produces a false positive error, you may suppress it using the "//\-V602" comment\. But in most cases you'd better rewrite this code\. It's not a good practice to handle expressions of the 'bool' type using binary operators: it makes the code unevident and less readable\.