ホームページ >バックエンド開発 >C++ >「cout」が「unsigned char」値を正しく出力しないのはなぜですか?

「cout」が「unsigned char」値を正しく出力しないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-29 11:53:10656ブラウズ

Why Doesn't `cout` Print `unsigned char` Values Correctly?

cout が unsigned char を正しく出力しないのはなぜですか?

提供されたコード内:

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

using namespace std;

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

出力には以下が含まれますcout を使用して出力すると、ガベージとして表示される値。これは、(1) の値に対応する ASCII 文字が印刷できないために発生します。これを確認するには、次のように std::isprint を使用します。

std::cout << std::isprint(a) << std::endl;

結果は 0 (false) になり、文字が印刷できないことを示します。

この問題を解決するには、 cout print "1" を用意し、 a を符号なし整数にキャストします:

cout << static_cast<unsigned>(a) << std::endl;

以上が「cout」が「unsigned char」値を正しく出力しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。