FloatLoopCounter
Remonter à Audits C++
Description
FloatLoopCounter avertit de l'utilisation d'une valeur à virgule flottante en tant que compteur de boucle. (CERT:FLP30-C, FLP30-CPP).
Conformément aux règles appliquées aux nombres à virgule flottante, FLP30-C : N'utilisez pas des variables à virgule flottante en tant que compteurs de boucles.
Des implémentations différentes ont des limitations de précision différentes, et afin de conserver la portabilité du code, les variables à virgule flottante ne doivent pas être utilisées en tant que compteurs de boucles.
Dans cet exemple de code, une variable à virgule flottante est utilisée en tant que compteur de boucle. Le résultat de l'itération est 9.
void __fastcall TForm1::func(void)
{
int Iterations;
Iterations = 0;
for (float x = 0.1f; x <= 1.0f; x += 0.1f)
{
/* Loop may iterate 9 or 10 times */
Iterations = Iterations + 1;
}
ShowMessage("The number of iterations is" +UnicodeString(Iterations);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
func();
}
Dans cet exemple de code, une variable entière est utilisée en tant que compteur de boucle. Le résultat de l'itération est 10.
void __fastcall TForm1::func(void)
{
int Iterations;
Iterations = 0;
for (int x = 1; x <= 10; x += 1)
{
/* Loop iterates 10 times */
Iterations = Iterations + 1;
}
ShowMessage("The number of iterations is" +UnicodeString(Iterations);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
func();
}