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 - 25.04.2009 19:59)
Als Antwort auf Re: Noch vorhandene Bugs in Version 1.6 von PeterS - 24.04.2009 11:53
Ich nutze:
C-Control Pro Mega128
Hallo und Danke

Joachim

> > 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: