Für dieses Forum muß Javascript im Browser aktiviert werden!
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.