Heim >Backend-Entwicklung >C++ >Warum erlaubt C# „short = short', aber nicht „short = short short'?
C# Short Integer Arithmetic: Verständnis von =
vs. =
C# zeigt beim Hinzufügen von short
Ganzzahlen ein scheinbar widersprüchliches Verhalten. Die direkte Zuweisung (short = short short
) schlägt bei der Kompilierung fehl, während die zusammengesetzte Zuweisung (short = short
) erfolgreich ist. Dieser Artikel erläutert dieses Verhalten.
Warum short short
zu int
Die Summe zweier short
-Ganzzahlen wird implizit zu einem int
heraufgestuft. Diese Designwahl verhindert mögliche Überlauffehler. Ein Überlauf tritt auf, wenn das Ergebnis einer arithmetischen Operation den durch den Datentyp darstellbaren Maximalwert überschreitet.
Betrachten Sie dieses Beispiel:
<code class="language-csharp">short[] prices = { 10000, 15000, 11000 }; short average = (prices[0] + prices[1] + prices[2]) / 3; // Compile-time error</code>
Ohne implizite Heraufstufung zu int
würde der Zusatz überlaufen, was zu einem ungenauen average
führen würde.
Die implizite Besetzung des =
Operators
Der =
-Operator unterscheidet sich von der direkten Zuweisung. Die C#-Sprachspezifikation schreibt vor, dass zusammengesetzte Zuweisungsoperatoren eine implizite Umwandlung in den Typ des linken Operanden durchführen.
Für a = b
, wobei a
und b
short
sind, übersetzt der Compiler dies effektiv in:
<code class="language-csharp">a = (short)(a + b);</code>
Diese implizite Umwandlung bewältigt einen potenziellen Überlauf, indem das int
-Ergebnis auf ein short
zurückgeschnitten wird. Beachten Sie, dass diese Kürzung zu Datenverlust führen kann, wenn die Summe den short
Bereich überschreitet.
Zusammenfassung
Die Addition zweier short
-Werte ergibt einen int
, um einen Überlauf zu vermeiden. Die implizite Umwandlung des =
-Operators ermöglicht prägnanten Code und verringert gleichzeitig das Risiko eines Datenverlusts aufgrund eines möglichen Überlaufs während des Vorgangs, eliminiert es jedoch nicht. Dies bietet Flexibilität und ermöglicht Berechnungen, die andernfalls zu Kompilierungsfehlern führen würden.
Das obige ist der detaillierte Inhalt vonWarum erlaubt C# „short = short', aber nicht „short = short short'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!