Char char e unsigned [chiuso]

5

Dove si trova il char non firmato utilizzato in C (si prega di descrivere alcuni esempi reali)? Perché dovremmo aver bisogno di char e unsigned char?

Il char varia da -127 a 128 (numero intero a 8 bit) Il char non firmato va da 0 a 255 (numero intero a 8 bit)

Se lo scopo è quello di memorizzare ASCII, perché dovremmo averne bisogno entrambi?

Un'altra domanda. Considera questo:

char a = 127;
unsigned char b = 255;

Quando lo stampo usando std :: cout. Mi dà diversi personaggi. Puoi spiegare perché? (Sto usando Microsoft vs11 compilatore)

    
posta nouveau 22.05.2013 - 13:29
fonte

3 risposte

6

Where is unsigned char used in C ( please tell about some real-world examples )? Why would we need both char and unsigned char?

signed o unsigned sono proprietà dei diversi tipi di dati C ( char , short , int , ecc ...). Quindi non è una questione se abbiamo bisogno di entrambi, entrambi vengono automaticamente come parte del modo in cui è definito C.

Char ranges from -127 to 128 ( 8-bit integer ) Unsigned Char ranges from 0 to 255 ( 8-bit integer )

Anche se questo è vero per la maggior parte delle piattaforme là fuori, non c'è nulla di garante che venga firmato char . Infatti su piattaforme ARM, è unsigned . Vedi questa correzione: link come esempio di bug del mondo reale introdotto assumendo che char è firmato.

If the purpose is to store ASCII, why would we need both?

Il fatto è che lo scopo non è archiviare ASCII. Capita di essere usato per memorizzare ASCII ma non è una necessità.

char a = 127;

unsigned char b = 255;

When I print it using std::cout. It gives me different characters. Can you explain why? ( I'm using Microsoft vs11 compiler

Penso che quello che stai cercando sia il seguente:

#include <iostream>

int main(void)
{
        char a = -1; 
        unsigned char b = 255;
        std::cout << a << std::endl << b << std::endl;
        return 0;
}

Questo è '-1' signed sarà uguale a '255' unsigned . Si prega di notare che questo è strongmente dipendente dall'implementazione e non c'è nulla che garantisca che funzioni su tutte le piattaforme e i compilatori.

    
risposta data 22.05.2013 - 18:37
fonte
7

unsigned char memorizza un numero. Puoi usarlo quando devi rappresentare numeri nell'intervallo da 0 a 255 e vuoi risparmiare memoria.

    
risposta data 22.05.2013 - 13:53
fonte
3

Hai dimenticato di menzionare signed char , che esiste anche ed è diverso da char .

char ha lo stesso intervallo di signed char o unsigned char e la sua destinazione d'uso se per i dati di carattere (anche se puoi usare solo codifiche strette, come ASCII, se vuoi la corrispondenza di 1 char = = 1 carattere).

Nonostante l'uso di char nei loro nomi, sia signed char che unsigned char sono target non per i dati dei caratteri, ma piuttosto per contenere numeri piccoli. unsigned char in particolare viene spesso utilizzato per memorizzare dati di byte non elaborati.

    
risposta data 22.05.2013 - 14:55
fonte

Leggi altre domande sui tag