C'è solo una istanza in cui è possibile utilizzare la parola chiave signed
. signed char
è sempre un tipo diverso da "plain" char
, che può essere un tipo firmato o non firmato a seconda dell'implementazione.
C++ 14 3.9.1/1 dice:
È dall'implementazione se un oggetto char
può contenere valori negativi. I caratteri possono essere dichiarati esplicitamente unsigned
o signed
. Pianura char
, signed char
e unsigned char
sono tre tipi distinti [...]
In altri contesti signed
è ridondante.
Prima di C++ 14, (e in C), c'era una seconda istanza: campi di bit. È stato definito dall'implementazione se, ad esempio, int x:2;
(nella dichiarazione di una classe) è uguale a unsigned int x:2;
o uguale a signed int x:2
.
C++ 11 9.6/3 dicono:
È implementazione definita se un'unita (né esplicitamente né firmati senza segno) char
, short
, int
, long
o long long
campo bit è firmato o non firmato.
Tuttavia, poiché C++ 14 questo è stato modificato in modo che int x:2;
significa sempre signed int
.Link to discussion
fonte
2015-01-18 18:03:32
Quasi mai. È implicito. Una possibile eccezione è 'firmata char'; lo standard non specifica se il semplice 'char' è firmato o non firmato, quindi se per qualche motivo vuoi specificamente un carattere firmato, devi dirlo esplicitamente. –
Lo uso per mostrare che il numero è esplicitamente firmato, più di un promemoria per il lettore. –
@IgorTandetnik Ancora di più, 'char',' signed char' e 'unsigned char' sono * tre * tipi distinti. Per tutti gli altri tipi interi, 'X' e' signed X' sono gli stessi. – Angew