0

printf("%cx", FILE2CHAR(F(fr)))「cout」で表現するにはどうすればよいですか?(注: FILE2CHAR(F(fr)) は int` を返します)

試してみcout<<hex<<FILE2CHAR(F(fr)); ましたが、場合によっては間違った16進数が返されます。

私の間違い。FILE2CHAR(F(fr)) は int を返しません。F(fr) は int を返します

FILE2CHAR はマクロです。

#define FILE2CHAR(f)       ('a'+(f))       /* file to text */

混乱してすみません助けてください〜

ありがとう

何を印刷しようとしていますか?%cx は、文字の後に x を出力します。とにかく16進マニピュレータを使用するのはなぜですか? – parkydr
x は hex を指すと思っていたので、そうですか? ここの構文と混同されています。

4

1 に答える 1

0

まだ少し混乱しているので、両方の状況について説明します。

文字を印刷するには、printf を次のようにする必要があります。

printf("%c", FILE2CHAR(F(fr)));

同等のストリームは

cout << static_cast<char>(FILE2CHAR(F(fr)));

FILE2CHAR は整数を返し、cout は整数値を表示するため、キャストが必要です。

16 進値を出力するには、printf を次のようにする必要があります。

printf("%x", FILE2CHAR(F(fr)));

同等のストリームは

cout << hex << FILE2CHAR(F(fr));

注: Dec マニピュレータを使用するまで、以降のすべての数値は 16 進数で表示されます。

于 2013-02-09T11:57:03.217 に答える