1. ホーム
  2. c++

[解決済み] uint8_t は cout で出力できません。

2022-04-16 10:57:16

質問

C++で整数を扱う際に、奇妙な問題があります。

変数に値をセットしてそれを表示する簡単なプログラムを書いたのですが、期待通りにいきません。

私のプログラムはたった2行のコードしかありません。

uint8_t aa = 5;

cout << "value is " << aa << endl;

このプログラムの出力は value is

に対して空白を表示します。 aa .

を変更すると uint8_t から uint16_t を実行すると、上記のコードは魅力的に動作します。

私はUbuntu 12.04 (Precise Pangolin)、64bitを使用しており、コンパイラのバージョンは。

gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)

解決方法は?

空白を印刷するのではなく、おそらく値5のASCII文字が印刷できない(または見えない)のでしょう。いくつかの 見えないASCII文字コード そのほとんどが32以下の値で、実際には空白です。

を変換する必要があります。 aaunsigned int を使うと数値が出力されるので ostream& operator<<(ostream&, unsigned char) は、目に見える文字の値を出力しようとします。

uint8_t aa=5;

cout << "value is " << unsigned(aa) << endl;