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.