Visual C# 2012 Grundkurs

Konversion von Zahlen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
C# ermöglicht es, UnsignedInteger-Zahlen ohne Vorkehrungen in Float-Variabeln oder Long-Werte zu konvertieren. Umgekehrt funktioniert dies nur unter gewissen Voraussetzungen.

Transkript

In diesem Abschnitt geht es um die Konversion von Zahlen. Das ist eine ziemlich einfache Angelegenheit. Ich nehme mal einen Integer-Value. Machen wir es noch klarer, nehmen wir einen "uint x = uint.MaxValue". Der Wert hat also jetzt 4 Milliarden und das weise ich jetzt einmal einer Float-Variablen zu: "f = x." Das Ganze geben wir auf der Konsole mal aus. Vielleicht sollten wir auch mal dieses "x" vorher auch mit ausgeben. Also ich führe das Programm mal aus und siehe da, es kommt die gleiche Zahl heraus, nur in einer anderen Darstellung. Ob da bei der Float-Variablen jetzt hinten etwas fehlt, ja oder nein, spielt als Sicherheit bei dieser Konversion keine sonderliche Rolle, sondern es geht einfach um den Zahlenbereich, den ich mit diesen Floats darstellen kann. Dieser Zahlenbereich ist größer als der Zahlenbereich, den ich mit ASIN-Integer darstellen kann. Deswegen kann diese Zuweisung gemacht werden, ohne dass ich irgendwelche Vorkehrungen treffe. Wenn ich das Ganze aber jetzt umkehren möchte und schreibe irgendwie so was hier und will das Ganze kompilieren, dann sagt mir der Compiler: "Das kann ich nicht machen." Eine Explizit-Konvertierung existiert jedoch. Also ich kann einen Cast machen und den Cast erziele ich, indem ich den Typ, den ich zuweisen will, in einer Klammer vor meinen Ausdruck schreibe. Also hier konvertiere ich jetzt den Wert "f" zu einem Uint-Wert und weise ihm die Variable "x2" zu. Und siehe da, schon kann ich das Ganze kompilierend ausführen. Ähnlich verhält es sich jetzt mit Integer- und Long-Werten. Ich mache jetzt "long l = x". Also, ich weise jetzt diesem Uint den Long-Wert zu. Damit das Ganze von der Angabe her ein bisschen übersichtlicher wird, kommentiere ich diese ganze "Console.WriteLine" da oben mal aus. Jetzt können wir hier diesen Long-Wert mal ausgeben. OK, schauen wir mal, ob das klappt. Siehe da, es ist exakt der gleiche Wert. Ist ja auch klar, weil ein Uint, der ist 32 Bit lang, der passt natürlich in einen Long-Wert rein. Der Long-Wert hat zwar ein Vorzeichen, aber das ist dann sozusagen das 64. Bit. Ab da gibt es dann 63 Bits für die Darstellung der Zahl. Es ist natürlich klar, das so eine Zahl zuweisbar ist. Aber wenn wir z.B. so was machen würden: Ich weise jetzt einer Integer-Variablen den Wert "l" zu. Wenn ich versuche das jetzt zu kompilieren, dann meckert mir der Compiler wieder aus dem gleichen Grund: Er kann einen Long-Wert nicht zu einem Int-Wert konvertieren. Ich kann das aber trotzdem tun. Nur dann ist es so, dass mir der Wert abgeschnitten wird. Jetzt sollte man den Integer-Wert vielleicht auch noch auf der Konsole ausgeben und man sieht, es kann ja gar nichts anderes als -1 jetzt hier herauskommen, weil "Uint.MaxValue" besteht ja binär aus 32 Einsen und diese 32 Einsen jetzt als ein Integer interpretiert, bedeutet einfach den Wert -1. Also, es wird schlichtweg das binäre Abbild der ersten 32 Bits als binäres Abbild des neuen Integers genommen, und so funktioniert diese Konvertierung. Ob die nun im einzelnen Fall Sinn macht oder nicht, das muss man dann eben entscheiden. So eine Konversion kommt manchmal schon vor, weil z.B. Streams, die haben eine Längenangabe, das ist ein Long. Man möchte ja manchmal einen Stream in ein Array kopieren. Deren Länge wird ja mit Integer angegeben und jetzt muss ich die Länge des Streams, also diesen Long-Wert in einen Integer-Wert zurück konvertieren. Das können Sie natürlich nur machen, wenn Sie sich ziemlich sicher sind, dass bei der Konversion nichts abgeschnitten wird. Aber sagen wir mal so, das passiert natürlich erst bei Streams, die größer als 4 GB sind. Es ist so im Normalfall eigentlich nicht der Fall. OK, das war es eigentlich mit dem Abschnitt schon wieder. Ich wollte einfach mal zeigen, wie Zahlen ineinander konvertiert werden.

Visual C# 2012 Grundkurs

Schreiben Sie eigene Programme in C# und lernen Sie dazu alle Schlüsselwörter und die meisten Konstrukte kennen, um sicher mit dieser Programmierspreche umzugehen.

7 Std. 1 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!