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

Warum druckt „cout' vorzeichenlose Zeichenwerte nicht korrekt?

Susan Sarandon
Susan SarandonOriginal
2024-11-27 18:07:13193Durchsuche

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;
}

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!

Stellungnahme:
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