﻿# V770\. Possible use of left shift operator instead of comparison operator\.

Анализатор обнаружил потенциально возможную опечатку в коде, связанную с тем, что в условии цикла вместо операторов '<' и '<\=' используются '<<' и '<<\=', соответственно\.

Рассмотрим пример такого кода:

```cpp
void Foo(std::vector<int> vec)
{
  for (size_t i = 0; i << vec.size(); i++) // <=
  {
    // Something
  }
}
```

Выражение "i << vec\.size\(\)" будет равно нулю\. Это явно ошибка, поскольку тело цикла ни разу не выполняется\. Корректный вариант кода:

```cpp
void Foo(std::vector<int> vec)
{
  for (size_t i = 0; i < vec.size(); i++) 
  {
    // Something
  }
}
```

Примечание\. Сдвиги вправо \(\>\>, \>\>\=\) считаются нормальной ситуацией, так как они используются в различных алгоритмах, например, вычисление количества бит, равных 1\. Пример:

```cpp
size_t num;
unsigned short var = N;
for (num = var & 1 ; var >>= 1; num += var & 1);
```