| 

.NET C# Java Javascript Exception

7
Hallo zusammen,
kann mir jemand den technischen Hintergrund erläutern warum man Anweisung Nr. 1 erst nach einem Cast funktioniert (siehe Anweisung 2)

Anweisung 1:
b = b + (byte)i; //geht nicht

Anweisung 2:
b = (byte)(b + (byte)i); //mit byte-Cast geht es

So halb kann ich mir es erklären... aber der Hintergrund fehlt mir dannn doch.
25.02.2011
Maik_1978 674 1 8
bitte die typen deklaration mitposten
nabuchodonossor 25.02.2011
4 Antworten
9
Du ahnst es vielleicht schon: Microsoft hat den +-Operator so definiert, dass sein Ergebnis ein int ist, selbst wenn beide Operanden bytes sind. Da es keine implizite Konvertierung von int nach byte gibt (aus gutem Grund), mußt Du dein Ergebnis casten.
Die subtilen Hintergründe dafür möchte dieser MSDN-Blogbeitrag erhellen.

Ergänzung: in Java ist das übrigens auch so gelöst, auch da ist das Ergebnis einer byte-Addition ein int.
25.02.2011
Matthias Hlawatsch 13,2k 4 9
6
Rechenoperationen für Ganzzahlen werden mit dem Type Int32 durchgeführt.
b + (byte)i;
gibt also ein Int32 zurück. Deshalb muss die ganze Operation gecastet werden.
25.02.2011
Fredo 575 1 9
1
Für den Fall, dass dich noch interessiert, welche impliziten Umwandlungen möglich sind:
http://msdn.microsoft.com/de-de/library/y5b434w4.aspx
25.02.2011
tb 220 3
0
Danke für alle Antworten!

Gruß

Maik
25.02.2011
Maik_1978 674 1 8
1
Falls die Antworten deine Frage präzise und eindeutig beantworten (was ich glaube) kannst du die für dich beste Antwort "akzeptieren" (grüne Häkchen). Vielen Dank
Fredo 12.03.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH