Kluczowa różnica: Podpisany znak i niepodpisany znak to dwa typy danych używane w programowaniu C. Oba znaki bez znaku i podpisu są używane do przechowywania znaków i składają się z obszaru o długości 8 bitów. Niepodpisane znaki mają wartości od 0 do 255, natomiast podpisane znaki mają wartości od -128 do 127 (na maszynie z 8-bitowymi bajtami i arytmetyczną dopełnieniem dwóch).
C90 umożliwił C używanie słów kluczowych podpisanych i niepodpisanych znakiem. Ważne jest, aby pamiętać, że są one używane tylko wtedy, gdy mają być obsługiwane małe wartości całkowite. Podpisany znak char i unsigned char to zarówno 8-bitowe bajty na 16-bitowym komputerze. Różnią się one przede wszystkim zakresem reprezentowanym przez nie. Zakres znaków bez znaku to od 0 do 255, natomiast rozmiar znaku lub znakowany znak to -128 do 127.
Transformacja char na wartości int odbywa się automatycznie przez C. Jednak nadal zależy to od maszyny, która decyduje, że wynik będzie negatywny, czy też nie. Wielkie litery A są równoważne liczbie całkowitej równej 65.
Pojęcia unsigned i signed użyte z char oznaczają, że jeśli zawartość tych ośmiu bitów zostanie zinterpretowana jako liczba całkowita, wówczas warunki te mogą mieć znaczenie. Typ danych znakowych jest zwykle typu niepodpisanego domyślnie. Jednak w trybie C ++ i ANSI C istnieje możliwość jawnego zadeklarowania ich jako podpisu lub znaku unsigned. W unsigned char 8 bitów jest wykorzystywanych jako bity danych, podczas gdy w pamięci reprezentowany znak 1-bitowy bit (najbardziej znaczący bit) jest używany dla bitów podpisanych, a 7 bitów jest używane jako bity danych. Jeśli bit podpisu wynosi 0, oznacza to, że liczba jest dodatnia. Jeśli bit podpisu wynosi 1, wówczas liczba jest ujemna.
Porównanie między Signed Char i Unsigned Char:
Podpisano Char | Bez znaku Char | |
Zasięg | -128 do +127 | 0 do 255 |
Typowa szerokość bitowa | 1 bajt | 1 bajt |
Przykład (x = 10000010) | Podpisany znak x = -2 | Bez znaku char = 82 |
Reprezentacja | 1 bit = bit podpisu 7 bitów = bity danych | 8 bitów = bity danych |
Deklaracja | Podpisany znak b | Bez znaku char a |