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 Alfred, > > > Aber über die Typen Umwandlung habe ich nur was in String gefunden, ich suche aber eine > > Möglichkeit ein long in einen int zu konvertieren. > > Dies benötige ich um eine genauere Berechnung(long)durch zuführen und nachher wird das > > Ergebnis geteil und als int abspeichern. Wo ich dann schön die function pcflcd.zahl5n2 benutze kann. > > In C, Typkonvertierung long l=500; int i=l; "expliziter" > > Das hat aber leider nicht funktioniert. > > Die Konvertierung funktioniert prinzipiell implizit über den Compiler. > D.h., wenn ein Long-Wert in einem Integer gespeichert werden soll, werden entsprechend > die oberen Bits abgeschnitten. > > Bei Berechnungen muß man entsprechend aufpassen, da bei der CC2 prinzipiell erstmal > alles in 16Bit gerechnet wird. > Es wird erst in 32Bit gerechnet, wenn mind. einer der Beiden Operanden einer Berechnung > oder Teilberechnung vom 32Bit-Typ ist. > > Wenn man mit Konstanten Werten arbeitet, ist die Reihenfolge u.U. ausschlaggeben. > Als Bsp.: > <code>long x; int y; > ... > x = y * 20000 * 100;</code> > Hier wird alles in 16 Bit gerechnet. > <code>x = 20000 * 100 * y;</code> > Hier schlägt die Optimierung des Compilers zu, in dem dieser schon beim Kompilieren > die ersten beiden Zahlen berechnet. Somit entseht eine Long-Konstante. > Somit wird gleich in 32Bit gerechnet. > > Man kann sich bei solchen Konstrukten damit behelfen, eine Berechnung von Konstanten in > Klamern zu setzen, auch wenn das rein mathematisch nicht notwendig wäre: > <code>x = y * (20000 * 100);</code> > Hier optimiert der Compiler ebenfalls die beiden Konstanten Ausdrücke, indem er diese > bereits beim Kompilieren zu einem Long-Wert berechnet. > > Um nun explizit den Datentyp Long zu erzwingen, kann man entweder die oder einen Operand > voher in eine Longvariable kopieren oder ein explizites Cast anwenden: > <code>x = cast.intLong(y) * 20000 * 100;</code> > > > > ps: > > Inkrementieren i++; ++i; gibt es in C2 nicht? > > Naja, C2 ist eben kein C, sondern nur daran angelehnt bzw. ein sehr einfach gehaltener C-Dialekt. > Daher kommt man <code>i=i+1;</code> nicht herum. :-) > > MfG André H.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB