Ist VC++ Implementation von >> ANSI Standard?
-
Ich habe letztens Gebrauch vom bitweisen Schiebeoperator >> gemacht und war doch irgendwie verwundert wie das gehandhabt wird. Man betrachte folgenden Code:
int x=-1; x>>=4;
Danach ist x immer noch -1. Wieso werden denn die Stellen mit Einsen aufgefüllt, wenn der Datentyp signed ist? Für mich macht das irgendwie keinen Sinn. Ist das wirklich ANSI Standard oder liegt das an dem Compiler den ich benutze (Visual Studio 6.0 Enterprise)?
-
Hi malfunction,
ich denke für systemnahe Programmierung ist das schon sinnvoll,
wenn man entscheiden kann, wie geshiftet wird.
Diese Möglichkeit haben auch wohl die meisten anderen Sprachen,
z.B. in Java gibt's dafür extra einen neuen Operator >>>.Jockel
-
Malfunction: Der Compiler generiert bei signed anscheinend einen SAR Befehl. Darf er auch (find ich auch sinnvoll, mal so nebenbei bemerkt.) Muß er aber nicht. Das ist implementation-defined.