Guten Tag,
ich bin seit kurzem dabei, mit Funktionen zu arbeiten, die eine variable Anzahl von Parametern erwarten. In den meisten Fällen funktionieren auch meine Funktionen, außer, ich übergebe/erwarte einen "float" Wert. Wenn dies der Fall ist, entstehen immer ganz merkwürdige Zahlen.
Dazu einmal der Quellcode:
Bei den unteren beiden Ausgaben kommt jeweil 10 raus. Aber bei der Obersten 1.875. Im Internet habe ich einige Quellcodes gefunden, wo auch "float" Werte benutzt wurden, dort kam es aber scheinbar nie zu Problemen.
Ich hoffe mir kann da jemand helfen.
p.s.: Benutze VisualStudio2005Pro
ich bin seit kurzem dabei, mit Funktionen zu arbeiten, die eine variable Anzahl von Parametern erwarten. In den meisten Fällen funktionieren auch meine Funktionen, außer, ich übergebe/erwarte einen "float" Wert. Wenn dies der Fall ist, entstehen immer ganz merkwürdige Zahlen.
Dazu einmal der Quellcode:
Code:
#include <iostream>
#include <stdarg.h>
template<class typ>
typ __cdecl summe(typ Anzahl, ...) {
va_list pArgumente;
typ Ergebnis(0);
va_start(pArgumente, Anzahl);
for(;Anzahl > static_cast<typ>(0); --Anzahl) {
Ergebnis += va_arg(pArgumente, typ);
}
va_end(pArgumente);
return Ergebnis;
}
int main(void) {
std::cout << summe(3.0f, 1.0f,4.0f,5.0f) << std::endl;
std::cout << summe(3.0, 1.0,4.0,5.0) << std::endl;
std::cout << summe(3, 1,4,5) << std::endl;
system("PAUSE");
return 0;
}
Bei den unteren beiden Ausgaben kommt jeweil 10 raus. Aber bei der Obersten 1.875. Im Internet habe ich einige Quellcodes gefunden, wo auch "float" Werte benutzt wurden, dort kam es aber scheinbar nie zu Problemen.
Ich hoffe mir kann da jemand helfen.
p.s.: Benutze VisualStudio2005Pro