Re: Noch vorhandene Bugs in Version 1.6 Kategorie: Programmierung C (von PeterS - 24.04.2009 11:53) | |
Als Antwort auf Re: Noch vorhandene Bugs in Version 1.6 von jodo63 - 24.04.2009 10:08
| |
> Hallo, > > ich habe von eurem Problem mit der unsigned Division gelesen. Hier hat der Compiler wohl noch einen > Fehler mit dem Bit 15, das bei signed Variablen die negativen Zahlen des Einerkomplements darstellt. > Folgender Code wird falsch ausgeführt: > > word Var1; > > Var1 = 50000; > Var1 = Var1 / 10000; >>> Ergebnis = -1 Wenn man hinter die Zahlen ein "u" für unsigned schreibt, dann bekommt an auch die richtigen Ergebnisse. Ansonsten geht der Compiler von einer signed Zahl aus. Gruss Peter > > Für die Werte werden folgende Ergebnisse berechnet: > 32768 >>> -3 > 40000 >>> -2 > 50000 >>> -1 > 60000 >>> 0 > > Folgender Code wird richtig ausgeführt: > > word Var1, Var2 > > Var1 = 50000; > Var2 = 10000; > Var1 = Var1 / Var2; >>> Ergebnis = 5 > > Hier gibt es noch Aufgaben für Conrad electronic ;-) > > Gruss > > Joachim > > > Danke für die Info, ich wünschte nur, ich hätte die Liste 2-3 Wochen früher gehabt. > > > > Bitte Fehler an ccpro@gmx.de schicken! Ich kann leider nicht immer das Forum verfolgen, da wie schonmal > > gesagt, Conrad mich nicht mehr bezahlt und auch der Conrad Support mich zu 90% nicht über Support- > > anfragen informiert. > > > > > > Gruss Peter > > > > > > > > 1. Fenster in der IDE lassen sich nicht mehr öffnen > > > > > > wenn das linke vertikale Fenster ganz nach links geschoben wird bis es verschwindet > > > und das untere horizontale Fenster ganz nach unten und man die IDE beendet und dann > > > wieder startet. > > Ich schau mal, das ich unterbinden kann, das die Fenster zu klein gemacht werden. > > > > > > > > > > > ============================================================================================ > > > > > > 2. Datentyp Char - keine Zuordnung von neg. Werten > > > > > > char a; > > > > > > void main(void) > > > { > > > for (a=5; a>-6; a--) > > > { > > > Msg_WriteInt(a); > > > Msg_WriteChar(0x20); // Leerzeichen > > > AbsDelay(500); > > > } > > > > > > > > > > > > while(1); > > > } > > > > > > > > > > > > Ausgabe: > > > > > > Interpreter gestartet - 2kb RAM > > > 5 4 3 2 1 0 255 254 253 252 251 250 249 248 247 246 245 244 243 242 241 240 239 > > > 238 237 236 235 234 233 232 231 230 229 228 227 226 225 224 223 222 > > > > > > > > > > > > > > > Ausgabe mit Datentyp Int: > > > > > > Interpreter gestartet - 2kb RAM > > > 5 4 3 2 1 0 -1 -2 -3 -4 -5 > > > > > > > > > > > > > > > =========================================================================================== > > > > > > 3. Divisionsfehler - falsche Ergebnisse wenn der Dividend >32700 wird > > > > > > word a,b; > > > > > > void main(void) > > > { > > > for (a = 31000; a < 34000; a=a+100) > > > { > > > b = a/10; > > > Msg_WriteWord(a); > > > Msg_WriteChar(0x20); // Leerzeichen > > > Msg_WriteWord(b); > > > Msg_WriteChar(0x0D); // CR > > > AbsDelay(200); > > > } > > > > > > while(1); > > > } > > > > > > > > > Ausgabe: > > > > > > Interpreter gestartet - 2kb RAM > > > 31000 3100 > > > 31100 3110 > > > 31200 3120 > > > 31300 3130 > > > 31400 3140 > > > 31500 3150 > > > 31600 3160 > > > 31700 3170 > > > 31800 3180 > > > 31900 3190 > > > 32000 3200 > > > 32100 3210 > > > 32200 3220 > > > 32300 3230 > > > 32400 3240 > > > 32500 3250 > > > 32600 3260 > > > 32700 3270 > > > 32800 62263 > > > 32900 62273 > > > 33000 62283 > > > 33100 62293 > > > 33200 62303 > > > 33300 62313 > > > 33400 62323 > > > 33500 62333 > > > 33600 62343 > > > 33700 62353 > > > 33800 62363 > > > 33900 62373 > > > | |
Antwort schreiben Antworten: Re: Noch vorhandene Bugs in Version 1.6 (von jodo63 - 25.04.2009 19:59) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum