2017-05-04 2 views

Antwort

6

Es gibt einen feinen Unterschied, der den Umgang mit Literalen und nicht typisierten Konstanten mit dem expliziten Bit-Clear-Operator erleichtert.

Untyped Integer haben ihren Standardtyp als int, so etwas wie a := uint32(1) & ^1 ist illegal, da^1 zuerst ausgewertet wird und es als^int (1) ausgewertet wird, was gleich -2 ist. a := uint32(1) &^ 1 ist jedoch legal, da hier 1 basierend auf dem Kontext als uint32 ausgewertet wird.

Es könnte auch einige Leistungsgewinne geben, wenn ein explizites Bit gelöscht wird, aber ich bin mir nicht sicher.

+2

Zumindest auf AMD64 kompilieren sie auf den gleichen Maschinencode, also gibt es keinen Leistungsunterschied dort. – JimB

+0

JimB, ich nehme an du meinst wenn du alles unterschrieben hast? –