In Java führt eine bitweise Operation zu einem Casting in Ganzzahl und verursacht auch eine Zeichenerweiterung. Zum Beispiel wird folgendes erwartet:
%Vor%In Java werden Zeichen in UTF-16 kodiert und jede Einheit wird mit 2 Bytes dargestellt.
%Vor%Ich habe -1 statt 32767 erwartet. Warum wird das Zeichen während der Typumwandlung nicht erweitert, bevor die bitweise Operation angewendet wird? Irgendwelche Ideen?
Weil char
unsigniert ist - 0xFFFF
hat wirklich einen Wert von 65535
Es funktioniert so, weil die Grundelementkonvertierung erweitert wird Dies wird bei Schichtargumenten durchgeführt. Es gibt nämlich keinen Informationsverlust, einschließlich des Vorzeichens des konvertierten Typs.