Verwendung signierter vs unsignierter Variablen für Flags in C ++

8

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.

    
qub1n 22.04.2015, 10:48
quelle

3 Antworten

3

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%

DEMO

    
Sambuca 22.04.2015 11:06
quelle
0

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.

%Vor%     
Filip Kowalski 22.04.2015 10:57
quelle
0

Wenn Sie sich entscheiden, Enum für Ihre Flags zu verwenden, ist hier ein nützliches Makro, das Code für bitweise Operatoren für Ihren Enum-Typ erstellt.

%Vor%

Verwendung:

%Vor%     
rozina 22.04.2015 11:15
quelle

Tags und Links