如何打印5字节整数值?

时间:2010-04-20 06:18:01

标签: c

我刚开始阅读C并对宏有疑问 如何打印5字节整数值(恰好在宏中定义)? 例如:

#define MAX 0xdeadbeaf12
int main(){
printf(" 0x %2x \n", MAX);
}  

此代码打印adbeaf12但不打印deadbeaf12。

如何打印所有字节?

2 个答案:

答案 0 :(得分:5)

我更喜欢对变量的大小做出假设。以下使用标准(但通常未使用)宏来定义64位常量,并将此数量打印为十六进制值。

#include <stdio.h>

// Pull in UINT64_C and PRIx64 macros
#include <inttypes.h>

// Make this a 64-bit literal value
#define MAX UINT64_C(0xdeadbeaf12)

int main()
{
    // Use PRIx64 which inserts the correct printf specifier for
    // a hex format of a 64-bit value
    printf(" 0x%" PRIx64 " \n", MAX);
}

答案 1 :(得分:3)

#define MAX 0xdeadbeaf12LL

将告诉编译器使用最长的可用整数类型(在使用MAX的任何地方,它将被转换为适当的类型)。

在大多数平台上,数字文字后缀LL将对应signed long long,这是32位系统上的64位(8字节)。 C优秀的打字系统和编译器警告将为您完成剩下的工作。

您的printf则需要使用ll修饰符:

printf(" 0x %2llx \n", MAX);