Der Grund, warum short = short
funktioniert, short = short short
jedoch nicht in C#
Bei der Programmierung ist die Datentypverwaltung von entscheidender Bedeutung. In C# besteht eine häufige Gefahr beim Umgang mit kurzen Ganzzahlen darin, dass sich der =
-Operator bei kurzen Ganzzahlvariablen anders verhält als erwartet. Lassen Sie uns näher auf dieses Thema eingehen.
Das Problem
Betrachten Sie den folgenden C#-Code:
<code class="language-csharp">short a, b; a = 10; b = 10; a = a + b; // 错误:无法隐式转换类型“int”为“short”。 // 我们也可以使用算术赋值运算符编写此代码,如下所示 a += b; // 但此代码可以成功运行,为什么? Console.Write(a);</code>
In der ersten Zeile führt die Zuweisung von a b
zur short
-Variable a
zu einem Fehler. Dies liegt daran, dass die Summe zweier Shorts ein int
ist und nicht implizit in short
umgewandelt werden kann. Die Verwendung von =
in der zweiten Zeile führt jedoch zu einer erfolgreichen Kompilierung. Warum ist das so?
Ganzzahlarithmetik verstehen
Die Antwort liegt in der Art und Weise, wie Ganzzahlarithmetik in C# funktioniert. Das Ergebnis der Ganzzahladdition ist int
, unabhängig vom Datentyp der Operanden. Dadurch wird das Risiko eines Ganzzahlüberlaufs vermieden, der auftreten könnte, wenn das Ergebnis von short short
short
ist.
=
Operator
=
-Operator ist die Abkürzung für a = a b
. Wenn der Rückgabetyp eines Operators gemäß der C#-Spezifikation implizit in den Typ von x konvertierbar ist (in diesem Fall short
), dann wird die Operation als x = (T)(x op y)
ausgewertet, wobei T der Typ von x ist.
Für a = b
fügt der Compiler die notwendigen Umwandlungen ein, um das Ergebnis von a b
(d. h. int
) in short
umzuwandeln. Dadurch kann die zusammengesetzte Zuweisung wie erwartet funktionieren.
Fazit
Während das Verhalten der Ganzzahlsummierung in C# zunächst verwirrend sein mag, ist das Verständnis der zugrunde liegenden Arithmetik- und Zuweisungsoperatorregeln von entscheidender Bedeutung, um unerwartetes Verhalten zu vermeiden und robusten Code zu schreiben. Durch die sorgfältige Verwaltung von Datentypen und die korrekte Verwendung des =
-Operators können Entwickler sicherstellen, dass sich ihre Programme wie erwartet verhalten.
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!