プログラミングにおいて、cout 関数を使用して unsigned char 値を出力すると、予期しない結果が生じることがあります。問題を詳しく調べて、なぜこの問題が発生するのかを調べてみましょう。
次のコード スニペットを考えてみましょう:
#include<iostream> #include<stdio.h> using namespace std; main() { unsigned char a; a=1; printf("%d", a); cout<<a; }
このコードを実行すると、1 の後にいくつかのメッセージが出力されます。一見ランダムなキャラクター。しかし、出力はなぜこのように動作するのでしょうか?
この混乱は、ASCII 値 1 に対応する文字に起因します。この文字は印刷不可能な制御文字であり、通常は表示時に表示されません。テキストとして。その結果、cout はそれをガベージとして出力します。これを確認するには、isprint 関数を使用して、文字が印刷可能かどうかを確認できます。
std::cout << std::isprint(a) << std::endl;
これは、文字が印刷不可能であることを示す 0 (false) を出力します。
問題を修正して printf と cout の両方に値 1 を表示するには、unsigned char を unsigned にキャストします。整数:
cout << static_cast<unsigned>(a) << std::endl;
以上がUnsigned Char 値を出力するときに「cout」が誤動作するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。