Heim > Backend-Entwicklung > C++ > Warum druckt „cout' vorzeichenlose Zeichen in C nicht korrekt?

Warum druckt „cout' vorzeichenlose Zeichen in C nicht korrekt?

DDD
Freigeben: 2024-11-27 06:01:08
Original
173 Leute haben es durchsucht

Why Doesn't `cout` Print Unsigned Characters Correctly in C  ?

cout druckt vorzeichenlose Zeichen nicht aus: Lösung des Problems

In C tritt häufig das Problem auf, dass cout vorzeichenlose Zeichen nicht druckt. Um dies zu verstehen, analysieren wir das bereitgestellte Codebeispiel:

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

using namespace std;

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

In diesem Code wird der vorzeichenlosen char-Variablen a der Wert 1 zugewiesen. Beim Drucken von a mit printf ist das Ergebnis „1“. Die Ausgabe mit cout << a zeigt ein scheinbar zufälliges Zeichen an.

Der Grund für diese Diskrepanz ist, dass unsigned char Werte von 0 bis 255 speichern kann. Wenn a 1 ist, entspricht es dem nicht druckbaren ASCII-Zeichen „SOH“ (Anfang von). Überschrift). printf behandelt nicht druckbare Zeichen anders als cout.

Um festzustellen, ob ein Zeichen druckbar ist, verwenden Sie die Funktion std::isprint:

std::cout << std::isprint(a) << std::endl;
Nach dem Login kopieren

Dadurch wird „0“ ausgegeben, was darauf hinweist „SOH“ ist nicht druckbar.

Um cout zum Drucken von 1 zu zwingen, wandeln Sie a in ein unsigned um Ganzzahl:

cout << static_cast<unsigned>(a) << std::endl;
Nach dem Login kopieren

Dadurch wird „1“ erfolgreich gedruckt.

Das Verständnis des grundlegenden Unterschieds zwischen printf und cout beim Umgang mit nicht druckbaren Zeichen ist für die Lösung dieses Problems von entscheidender Bedeutung. Darüber hinaus kann std::isprint dabei helfen, zu bestimmen, ob ein Zeichen in einer für Menschen lesbaren Form gedruckt werden soll.

Das obige ist der detaillierte Inhalt vonWarum druckt „cout' vorzeichenlose Zeichen in C nicht korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage