# V1034. Do not use real-type variables as loop counters.

Анализатор обнаружил переменную вещественного типа в качестве счётчика цикла 'for'. Поскольку числа с плавающей точкой не могут точно отобразить все действительные числа, использование таких переменных в цикле может дать непостоянное количество итераций.

Рассмотрим пример:

    void foo(void) {
      for (float A = 0.1f; A <= 10.0f; A += 0.1f) {
        ....
      }
    }

Количество итераций в этом цикле может быть 99 или 100. Точность операций с вещественными числами может зависеть от компилятора, режима оптимизации и многого другого.

Лучше переписать цикл следующим образом:

    void foo(void) {
      for (int count = 1; count <= 100; ++count) {
        float A = count / 10.0f;
      }
    }

Этот цикл выполнит ровно 100 итераций, а переменную 'A' можно использовать для необходимых вычислений.

Данная диагностика классифицируется как:

CWE-834 CERT-FLP30-C