Heim > Backend-Entwicklung > C++ > Warum funktioniert „short = short' in C#, während „short = short short' nicht funktioniert?

Warum funktioniert „short = short' in C#, während „short = short short' nicht funktioniert?

Mary-Kate Olsen
Freigeben: 2025-01-23 08:52:10
Original
955 Leute haben es durchsucht

Why Does `short  = short` Work in C# While `short = short   short` Doesn't?

Integer-Überlauf und arithmetische Zuweisungsoperatoren in C#: short = short

Wenn in C# zwei short-Ganzzahlen hinzugefügt werden, ist das Ergebnis ein int-Typ mit einem größeren Wertebereich als short. Ein Ganzzahlüberlauf tritt auf, wenn die Summe zweier short-Ganzzahlen den Maximalwert von short überschreitet.

Bedenken Sie den folgenden Code:

<code class="language-csharp">short a, b;
a = 10;
b = 10;
a = a + b; // 错误:无法隐式转换类型“int”为“short”。</code>
Nach dem Login kopieren

Hier ist das Ergebnis der Additionsoperation von a und b vom Typ int und der Compiler kann es nicht implizit in den Typ short konvertieren. Dies liegt daran, dass die Zuweisung von int zu short ohne explizite Konvertierung zu Datenverlust führt.

Der folgende Code erzeugt jedoch keinen Fehler:

<code class="language-csharp">a += b; // 但这段代码可以成功运行,为什么?</code>
Nach dem Login kopieren

Das liegt daran, dass C# den arithmetischen Zuweisungsoperator = anders behandelt. Bei Verwendung von = führt der Compiler intern Folgendes aus:

<code class="language-csharp">a = (short)(a + b);</code>
Nach dem Login kopieren

Der Compiler konvertiert das Ergebnis der Additionsoperation automatisch in den Typ a, bevor er das Ergebnis short zuweist. Dadurch wird sichergestellt, dass der Wert auch dann korrekt in der Variablen int gespeichert wird, wenn das Zwischenergebnis vom Typ short ist.

Dieses Verhalten ähnelt anderen zusammengesetzten Zuweisungsoperatoren wie -=, *= und /=, die das Ergebnis automatisch in den Typ des linken Operanden umwandeln.

Daher kann der arithmetische Zuweisungsoperator short sicher auf =-Variablen angewendet werden, selbst wenn die Summe den Bereich von short überschreitet. Der Compiler übernimmt die Typkonvertierung intern, um Ganzzahlüberlauffehler zu vermeiden.

Das obige ist der detaillierte Inhalt vonWarum funktioniert „short = short' in C#, während „short = short short' nicht funktioniert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage