#include <iostream>
using namespace std;
int main()
{
char c1 = 0xab;
signed char c2 = 0xcd;
unsigned char c3 = 0xef;
cout << hex;
cout << c1 << endl;
cout << c2 << endl;
cout << c3 << endl;
}
mi aspettavo l'uscita sono i seguenti:Come emettere un carattere come numero intero tramite cout?
ab
cd
ef
Eppure, non ho niente.
Immagino che questo sia dovuto al fatto che cout considera sempre "char", "signed char" e "unsigned char" come caratteri anziché interi a 8 bit. Tuttavia, "char", "signed char" e "unsigned char" sono tutti tipi interi.
Quindi la mia domanda è: come generare un carattere come un intero attraverso cout?
PS: static_cast (...) è brutto e ha bisogno di più lavoro per tagliare i bit in più.
afaik, casting è il modo più efficace ... (ad esempio 'static_cast()') –
Nim
colata a 'int'? –
btw. l'unica ragione per cui hai bisogno di ricorrere al "trimming" è che chiaramente non stai usando i tipi correttamente (i primi due * chiaramente * overflow) e questo è ciò che ottieni come risultato. Se hai sempre usato il tipo corretto, il cast è semplicemente, 'static_cast (...)' ... –
Nim