Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> > > Hallo NitraM, > > > > > > ganz verstanden habe ich das noch nicht. > > > Gesetzt den Fall, timer erhält bei der Zuweisung den Wert 2147483647. > > > 600 ms später komme ich wieder zu der if Anweisung. system.timer() hätte wegen Umlaufs > > > den Wert -2147483048? Die Rechenoperation -2147483048 -2147483647 müßte -4294966695 ergeben, > > > übersteigt damit den Wertebereich des Typs long um das Doppelte, aber wieso sollte das Ergebnis > > > trotzdem 600 werden? > > > > > > Detlef > > > > Nicht nur der Timer läuft über, sondern jede Variable. > > somit wird aus 2147483647+1 immer -2147483648 , egal, ob timer oder normale Long-Variable. > > Timervergleiche werden in der Programmierung eigentlich schon immer auf diese Weise gemacht, > > da diese immer funzen. > > Vieleicht lässt sich das am einfachsten mit der Hex-Schreibweise verdeiutlichen: > > 0x00000000 bis 0x7FFFFFFF sind die Werte von 0 bis 2147483647 > > 0x80000000 bis 0xFFFFFFFF sind die Werte von -2147483648 bis -1 > > Addierst Du nun bei 0x7FFFFFFF eins dazu, erhäst Du 0x80000000, also -2147483648. > > Addierst Du bei 0xFFFFFFFF (=-1) ein dazu erhälst Du 0. > > Der eigentliche Überlauf findet also von -1 zu 0 statt. > > Bei der Subtraktion verhält sich das ganze genauso. > > > > Wenn Du jetzt system.timer()-timer rechnest, und timer den Wert 2147483000 hat > > und der System-timer bei -214748250 steht, wird also > > -2147482500 - 2147483000 gerechnet. > > Hier kommt es bei der Berechnung zu einem "Überlauf": > > 0x8000047C - 0x7FFFFD78 > > Wie Du siehst aber nicht wirklich. :-) > > Das Ergebis wäre hier 1796 (0x704). > > Ineressant wäre eher der Timerbereich von z.B. -100 zu +50. > > system.timer() - timer: > > 0x00000032 - 0xFFFFFF9C > > Hier findet ein echter Überlauf bei der Berechnung statt. > > Das Ergebis ist aber dennoch +150 > > > Das bedeutet dann ja aber, das bei einem logischen Vergleich zweier Zahlen, immer die > Negative die "größere" Zahl ist, also -1 > 1 --> true!
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB