Hallo!
Ich habe gerade nach mehrstündigen debuggen scheinbar einen Fehler gefunden, den ich bisher nicht kannte.
Für eine Baumstruktur habe ich mehrfach Integers benötigt, die aus mehren aufaddierten Potenzen bestehen.
Beispiel (kein reeler Code):
int count = 0;
int levels = 5;
int branchfactor = 5;
for (int i = 0; i
Soweit so gut, Compiler meckert nicht weil double (vom pow()) auf int gecastet wird.
Aber scheinbar werden dort werde verschluckt.
5^2 = 25 - als double wert wird dies auch korrekt ausgegeben. Wenn ich es aber auf int caste, erhalte ich 24.
Ich habe mir einmal ein kleines Testprogramm gebaut:
#include
#include
using namespace std;
int main() {
cout
Beim Lauf des Programms kommt es dann zu folgender Konsolenausgabe:
5
25
125
Drücken Sie eine beliebige Taste . . .
5
24
124
---
153
Drücken Sie eine beliebige Taste . . .
Jetzt bin ich doch etwas arg verwirrt - kennt jemand dieses "Pänomen" ebenfalls?
Falls ja, was kann man tun um diese Fehler zu beseitigen? Ein einfach "addiere bei jedem Exponenten \> 1 noch 1 zum ergebnis" empfinde ich als nicht sonderlich sauber...
Oder benutze ich einfach die Falsche Funktion?
Grüße
Björn