Re: Typkonvertierung Typen Umwandlung Kategorie: Programmierung (von André H. - 2.09.2011 17:14) | ||
Als Antwort auf Typkonvertierung Typen Umwandlung von Alfred - 1.09.2011 14:27 | ||
| ||
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.: long x; int y; ... x = y * 20000 * 100; Hier wird alles in 16 Bit gerechnet. x = 20000 * 100 * y; 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: x = y * (20000 * 100); 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: x = cast.intLong(y) * 20000 * 100; > 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 i=i+1; nicht herum. :-) MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: Re: Typkonvertierung Typen Umwandlung (von Alfred - 2.09.2011 20:54) |