Supportnet / Forum / Anwendungen(Java,C++...)
Typkonvertierungen unter C
Frage
Wenn ich arithmetische Operationen mit zwei Variablen unterschiedlichen Typs durchführen möchte, dann wird die Variable kleineren Typs doch vor der Berechnung in ein größeren Typ automatisch umgewandelt, oder habe ich da was falsch Verstanden.
Antwort 1 von semi
Dies ist, glaube ich, abhängig von dem Typen der Variable, der ein Wert zugewiesen wird.
Ich würde mich nicht darauf verlassen, sondern explizit mit casts angeben, was ich erwarte.
Du schreibst "...dann wird die Variable kleineren Typs doch vor der Berechnung in ein größeren Typ automatisch umgewandelt"
Dies stimmt.
float * int = float
long * int = long
usw.
Solche Konvertierungen machen keine Probleme. Schlimmer wäre es umgekehrt, wenn z.B. Nachkommastellen in einem Zwischenergebnis nicht berücksichtigt werden.
Die meisten Compiler geben eine Warnungen aus, wenn so etwas vorkommt. Einige verlangen ausdrücklich einen Cast.
Folgendes sollte ohne casts nicht compilierbar sein:
float a = 1.1;
int b = a * 2; // falsch
int c = (int)(a*2); // besser
Gruss,
Michael
Ich würde mich nicht darauf verlassen, sondern explizit mit casts angeben, was ich erwarte.
Du schreibst "...dann wird die Variable kleineren Typs doch vor der Berechnung in ein größeren Typ automatisch umgewandelt"
Dies stimmt.
float * int = float
long * int = long
usw.
Solche Konvertierungen machen keine Probleme. Schlimmer wäre es umgekehrt, wenn z.B. Nachkommastellen in einem Zwischenergebnis nicht berücksichtigt werden.
Die meisten Compiler geben eine Warnungen aus, wenn so etwas vorkommt. Einige verlangen ausdrücklich einen Cast.
Folgendes sollte ohne casts nicht compilierbar sein:
float a = 1.1;
int b = a * 2; // falsch
int c = (int)(a*2); // besser
Gruss,
Michael
Antwort 2 von Dachdecker
Ich danke dir Michael.

