Hallo, bei mir gibt es mit dem MSPGCC Probleme, wenn im nachfolgenden Code der Wert von si grösser als ca. 20 ist. Bei kleineren Werten von "si" klappt das ganze einwandfrei. ui_tmp = ui_tmp + (1<<si); Wenn ich den Wert von "ui_tmp" mit 65536 multipliziere (also um 16 Stellen nach links schiebe), dann ergibt sich der richtige Wert, der Compiler kann so grosse Zahlen also verarbeiten. Die betreffenden Variablen sind alle als "unsigned long" definiert.
1 ist vom Typ int und der hat nur 16 Bits. Ein Shift um mehr als 16 ist daher undefiniert. Die Typen drum herum sind dafür nicht relevant.
aaaaah, danke. Könnte sich da mit Typkonvertierung von 1 in (unsigned long) was machen lassen, z.B. ui_tmp = ui_tmp + ( (unsigned log)1 <<si); Habe das Projekt schon geschlossen.
ok, mit der Typkonvertierung klappt es. ui_tmp = ui_tmp + ((unsigned long)1<<si);
Wie unsauber !!! einen ul mit einem ui addieren und das ganze im ui speichern ???? da geht immer was verloren !!!! gruss Claudio
der ui ist auch vom Typ long, der Name war nur noch nicht entsprechend geändert. Trotzdem danke.
hilfesuchender schrieb: > der ui ist auch vom Typ long, der Name war nur noch nicht entsprechend > geändert. Trotzdem danke. Was einer der Gründe ist, warum diese "ungarischen Notation" Unsinn ist.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.