﻿# V8036\. A meaningless comparison with a variable of an unsigned type\.

Анализатор обнаружил бессмысленное сравнение числовых значений, результат которого всегда true или false\.

Пример ошибочного кода:

```cpp
func IncrementNonce(key []byte, keySize uint) {
  ....
  for k := keySize - 3; k >= 0; k-- {
    key[k]++
    if key[k] != 0 {
      break
    }
  }
}
```

В данном примере сравнение `k >= 0` не имеет смысла, т\. к\. результат всегда`true`, поскольку переменная `k` имеет тип `uint` и не может принимать отрицательные значения\. А при попытке вычесть шаг цикла из счётчика`k`, имеющего нулевое значение, переменная `k` примет максимальное значение типа `uint`\. Таким образом, цикл `for` будет бесконечным\.

Вариант корректного кода:

```cpp
func IncrementNonce(key []byte, keySize uint) {
  ....
  for k := keySize - 2; k > 0; k-- {
    key[k - 1]++
    if key[k - 1] != 0 {
      break
    }
  }
}
```

В данном случае цикл будет остановлен, как только переменная `k` примет значение `0`\.