Differenza chiave: il carattere con segno e il carattere senza segno sono due tipi di dati utilizzati nella programmazione C. Entrambi i caratteri non firmati e firmati vengono utilizzati per memorizzare i caratteri e sono costituiti da un'area di 8 bit. I caratteri senza segno hanno valori compresi tra 0 e 255, mentre i caratteri firmati hanno valori compresi tra -128 e 127 (su una macchina con byte da 8 bit e aritmetica del complemento a due).
C90 abilitato C per utilizzare parole chiave firmate e non firmate con char. È importante notare che vengono utilizzati solo quando devono essere gestiti valori interi piccoli. Il char firmato e il char unsigned sono entrambi a 8 bit byte su una macchina a 16 bit. Differiscono principalmente nell'intervallo da essi rappresentato. L'intervallo di caratteri non firmati è compreso tra 0 e 255, mentre la dimensione del carattere o del carattere firmato è compresa tra -128 e 127.
La trasformazione di char in valori int viene eseguita automaticamente da C. Tuttavia, dipende ancora dalla macchina che decide che il risultato sarebbe negativo o meno. Il maiuscolo A equivale al valore intero di 65.
I termini unsigned e signed utilizzati con char indicano che se il contenuto di questi otto bit viene interpretato in un numero intero, questi termini possono fare la differenza. Il tipo di dati carattere è solitamente di tipo non firmato per impostazione predefinita. Tuttavia, in modalità C ++ e ANSI C, esiste un'opzione per dichiararli esplicitamente come caratteri con segno o senza segno. In unsigned char vengono utilizzati 8 bit come bit di dati, mentre nella rappresentazione della memoria del char firmato 1 bit (il bit più significativo) viene utilizzato per il bit con segno e 7 bit vengono utilizzati come bit di dati. Se il bit firmato è 0, significa che il numero è positivo. Se il bit firmato è 1, il numero è negativo.
Confronto tra Char firmato e Char unsigned:
Char firmato | Char senza segno | |
Gamma | Da -128 a +127 | Da 0 a 255 |
Larghezza di bit tipica | 1 byte | 1 byte |
Esempio (x = 10000010) | Carattere firmato x = -2 | Char senza segno = 82 |
Rappresentazione | 1 bit = bit con segno 7 bit = bit di dati | 8 bit = bit di dati |
Dichiarazione | Carattere firmato b | Carattere senza firma a |