cout nicht drucken unsigned char

Arbeite ich auf folgenden code:

#include<iostream>
#include<stdio.h>

using namespace std;

main() {
    unsigned char a;
    a=1;
    printf("%d", a);
    cout<<a;
}

Er den Druck, 1 und einige Müll.

Warum cout verhält sich so?

  • Ein unsigned char ist nicht ein int. Warum erzählst du printf es ist?
  • Was würden Sie erwarten, dass aus dem senden einer binären 1 bis stout?
  • unsigned char gefördert werden, um unsigned in einem printf-Aufruf, so dass der code wird akzeptiert.
  • Ah, ich Dummerchen. Ich dachte, es war eine für unsigned char, weil der char ein, aber das Ende macht keinen Sinn, wirklich. Dank für das clearing es.
  • die ersten 32 Zeichen sind steuerzeichen und werden nicht-druckbare
  • Möglich, Duplikat der wie Drucke ich einen unsigned char als hex in c++ ostream?
  • scheint zu funktionieren jetzt. jetzt seinen eben std::cout Druck-Müll, wenn es bekommt ein uint8_t.std::cout << (uint8_t)3 << std::endl druckt ein Herz, obwohl eindeutig die richtige Darstellung für ein byte mit dem Wert 3, ist nicht ein Herz, es sei denn, seine ein vorzeichenbehaftetes byte, dann wäre es sinnvoll.

Schreibe einen Kommentar