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

Warum druckt „cout' vorzeichenlose Zeichenwerte nicht korrekt?

Susan Sarandon
Freigeben: 2024-11-27 18:07:13
Original
192 Leute haben es durchsucht

Why Doesn't `cout` Print Unsigned Char Values Correctly?

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;
}
Nach dem Login kopieren

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;
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage