548 Stimmen

Was ist ein Zeichen ohne Vorzeichen?

In C/C++, was eine unsigned char verwendet wird? Wie unterscheidet sie sich von einer normalen char ?

2voto

Kalana Punkte 5073

signed char y unsigned char stehen beide für 1 Byte, haben aber unterschiedliche Bereiche.

   Type        |      range
-------------------------------
signed char    |  -128 to +127
unsigned char  |     0 to 255

Unter signed char wenn wir bedenken char letter = 'A' A' steht für den binären Wert 65 in ASCII/Unicode Wenn 65 gespeichert werden kann, kann auch -65 gespeichert werden. Es gibt keine negativen Binärwerte in ASCII/Unicode Es gibt keinen Grund, sich über negative Werte Gedanken zu machen.

Beispiel

#include <stdio.h>

int main()
{
    signed char char1 = 255;
    signed char char2 = -128;
    unsigned char char3 = 255;
    unsigned char char4 = -128;

    printf("Signed char(255) : %d\n",char1);
    printf("Unsigned char(255) : %d\n",char3);

    printf("\nSigned char(-128) : %d\n",char2);
    printf("Unsigned char(-128) : %d\n",char4);

    return 0;
}

Ausgang -:

Signed char(255) : -1
Unsigned char(255) : 255

Signed char(-128) : -128
Unsigned char(-128) : 128

0 Stimmen

char ist nicht garantiert ein Byte groß und signed char wird nur der Bereich [-127,127] garantiert (obwohl fast alle Systeme das Zweierkomplement verwenden und mindestens [-128,127] halten)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X