C打印U32类型的整数



我有十六进制值0x5a800000000b,我试图在C中获得printf语句以将其打印到控制台。

到目前为止(因为我在C中没用),我能够得到'b'打印,使用语法:

printf("Hex value%xn", value);

该值存储在整数类型U32中,但在尝试了%llx, %lx的所有不同组合后,我只是不断得到编译器警告。

我猜我得到printf语法错误,但我似乎找不到正确的%选项,有人能帮我吗?

谢谢

printf没有问题。

问题是32位变量不能保存值0x5a800000000b。32位只能容纳8位十六进制数字:0x0000000b。因此输出上的b

要存储这么大的值,应该使用64位变量。

long long value = 0x5a800000000bLL

还要注意末尾的双L。它告诉编译器该常量也是long long

那么您可以在printf格式字符串中使用%llx

对于这些类型有一些预定义的宏:

#include <inttypes.h>
int64_t PRId64. PRIi64
int32_t PRId32, PRIi32
int16_t PRId16, PRIi16
int8_t PRId8, PRIi8
例如:

printf("%"PRId32"n", my32Int);

值0x5a800000000b大于32位,因此您必须使用long

long value = 0x5a800000000bl;
printf("Hex value%lxn", value);

注意十六进制常量应该以l结尾,

相关内容

  • 没有找到相关文章

最新更新