带有%a的printf似乎不会产生十六进制数

时间:2017-02-17 16:07:09

标签: c hex printf

我被告知在C的printf中使用的“%a”将显示数字的十六进制格式。为了测试它,我打印出2 ^ 10的表示:

 printf ("%a", pow(2.0,10));

给出了

0x1p+10

我很困惑,因为指数部分“+10”看起来更像十进制格式而不是十六进制格式。十六进制格式应为1pA。我哪里错了?

1 个答案:

答案 0 :(得分:4)

没错,该格式被称为double的十六进制。

手册页说:

  

对于a转换,double参数将转换为十六进制   风格abcdef [...]中的符号(使用字母[-]0xh.hhhp[+-]d)   指数由正号或负号后跟a组成   表示指数为2的十进制数。

所以它是正确的,当尾数是十六进制时,指数仍然是十进制的。