Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Noch vorhandene Bugs in Version 1.6 Kategorie: Programmierung C (von jodo63 - 24.04.2009 10:08)
Als Antwort auf Re: Noch vorhandene Bugs in Version 1.6 von PeterS - 24.04.2007 10:50
Ich nutze:
C-Control Pro Mega128
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

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 PeterS - 24.04.2009 11:53)
    Re: Noch vorhandene Bugs in Version 1.6 (von jodo63 - 25.04.2009 19:59)