【发布时间】:2019-12-05 19:06:07
【问题描述】:
我想打印浮点数的十六进制表示,但有一些fs 被意外打印。
这是我正在使用的代码:
float f = 0.2;
char *ptr = (char*)&f;
for (int i = 0; i < sizeof(float); i++)
printf("%.2x\n", ptr[i]);
这是我得到的:
ffffffcd
ffffffcc
4c
3e
【问题讨论】:
-
不要发布代码图片。无论如何,那是因为
char显然已在您的系统上签名。使用unsigned char。 -
另外,您代码中的
%2f与问题标题中的%.2f不匹配。 -
@Jester 对不起,我是新手,谢谢你让我知道这里的规则。
-
@Das_Geek 感谢您的编辑,感谢大家回答我的问题。
-
@PeterCordes 你的godbolt链接只显示编译器默认设置,你可以在gcc上用
-fsigned-char或-funsigned-char改变它。实际上是否涉及任何二进制不兼容?