Heim >Backend-Entwicklung >C++ >Warum druckt „cout' vorzeichenlose Zeichenwerte nicht korrekt?
Warum druckt cout nicht signierte Zeichen nicht korrekt?
Im Codeausschnitt:
#include<iostream> #include<stdio.h> using namespace std; main() { unsigned char a; a=1; printf("%d", a); cout<<a; }
cout druckt ein Wert, der Müll zu sein scheint. Allerdings ist das eigentlich kein Müll. Es handelt sich um ein nicht druckbares ASCII-Zeichen, das gedruckt wird. Beachten Sie, dass das ASCII-Zeichen, das 1 entspricht, nicht druckbar ist.
Sie können dies mit std::isprint: überprüfen:
std::cout << std::isprint(a) << std::endl;
Dadurch wird 0 (falsch) ausgegeben, was angibt, dass das Zeichen ist nicht druckbar.
Um cout zum Drucken von 1 zu zwingen, wandeln Sie a in eine vorzeichenlose Ganzzahl um:
cout << static_cast<unsigned>(a) << std::endl;
Das obige ist der detaillierte Inhalt vonWarum druckt „cout' vorzeichenlose Zeichenwerte nicht korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!