C printf整数类型U32

时间:2013-01-16 10:31:45

标签: c integer printf

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

到目前为止(因为我在C中没用)我可以使用以下语法来打印'b':

printf("Hex value%x\n", value);

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

我猜我的printf语法错误,但我似乎无法找到合适的%选项,有人可以帮助我吗?

由于

3 个答案:

答案 0 :(得分:6)

这不是printf的问题。

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

要存储如此大的值,您应该使用64位变量。

long long value = 0x5a800000000bLL

另请注意最后的双L。它告诉编译器该常量也是long long

然后,您可以在%llx格式字符串中使用printf

答案 1 :(得分:4)

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

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

例如:

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

答案 2 :(得分:0)

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

long value = 0x5a800000000bl;
printf("Hex value%lx\n", value);

请注意,十六进制常量应以l,。

结尾