0

如何printf("%cx", FILE2CHAR(F(fr)))用“cout”表达?(注意:FILE2CHAR(F(fr)) 返回一个 int`)

我已经尝试过cout<<hex<<FILE2CHAR(F(fr)); ,但在某些情况下,它仍然返回错误的十六进制。

我的错。FILE2CHAR(F(fr)) 不返回 int。F(fr) 返回一个整数

FILE2CHAR 是一个宏:

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

给您造成的困扰请大家帮忙~

谢谢

你想打印什么?%cx 将打印一个字符后跟 x。为什么还要使用六角操纵器?– parkydr
因为我认为 x 指的是十六进制,对吗?有点与这里的语法混淆。

4

1 回答 1

0

仍然有点困惑,所以我将介绍这两种情况。

要打印一个字符, printf 应该是

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

流当量是

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

强制转换是必需的,因为 FILE2CHAR 将返回一个整数,因此 cout 将显示整数值。

要打印十六进制值, printf 应该是

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

流当量是

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

注意:在您使用 dec 操纵器之前,所有后续数字都将以十六进制显示。

于 2013-02-09T11:57:03.217 回答