Gibt es eine "gute Praxis" oder eine Gewohnheit, signierte Variablen im Vergleich zu vorzeichenlosen Variablen für Flags zu verwenden? Persönlich würde ich eine vorzeichenlose Variable verwenden, aber ich kann sogar eine signierte Variable sehen, die für Flags in irgendeinem Code verwendet wird. Ich meine vor allem in der Bibliothek Schnittstelle, wo es darauf ankommt.
UDPAT Ich kann die Antwort "enum verwenden" nicht akzeptieren, weil sie implementierungsabhängig ist und dies Es kann nicht in der Bibliotheksschnittstelle verwendet werden.
Ich denke, ein vorzeichenloser Typ ist eine bessere Darstellung einer Reihe von Flags. Da Sie eine bestimmte Anzahl von äquivalenten Bits benötigen, um Ihre Flaggen zu repräsentieren. Bei einem Typ mit Vorzeichen ist das erste Bit eine besondere Art.
Wahrscheinlich könnte das std :: bitset auch Ihren Anforderungen entsprechen. Und wird Ihnen mit den grundlegenden logischen Operatoren und Konvertierungsmethoden dienen.
%Vor% Es ist bekannt, dass die Flags immer nicht negative ganze Zahlen sind, aber warum würden Sie int
/ unsigned int
/ short
/ unsigned short
für eine Flagge verwenden? Verwenden Sie #define
oder besser noch enum
type.