FloatLoopCounter

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu C++-Audits


Beschreibung

FloatLoopCounter warnt bei der Verwendung von Gleitkommawerten als Schleifenzähler. (CERT:FLP30-C, FLP30-CPP).

Gemäß den Regeln für Gleitkommazahlen: FLP30-C: Verwenden Sie keine Gleitkommavariablen als Schleifenzähler.

Verschiedene Implementierungen haben unterschiedliche Genauigkeitsbeschränkungen und damit Code portierbar bleibt, sollten Gleitkommavariablen nicht als Schleifenzähler verwendet werden.

Inkorrekt

In diesem Codebeispiel wird eine Gleitkommavariable als Schleifenzähler verwendet. Das Ergebnis der Iteration lautet 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();
}

Korrekt

In diesem Codebeispiel wird eine Integervariable als Schleifenzähler verwendet. Das Ergebnis der Iteration lautet 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();
}

Siehe auch