首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打印5个字节的整数值?

如何打印5个字节的整数值?
EN

Stack Overflow用户
提问于 2010-04-20 14:18:01
回答 2查看 1.3K关注 0票数 0

我刚开始读C,有一个关于宏的问题。

如何打印一个5字节的整数值(恰好在宏中定义)?例如:

代码语言:javascript
复制
#define MAX 0xdeadbeaf12
int main(){
printf(" 0x %2x \n", MAX);
}  

这段代码打印adbeaf12,但不打印deadbeaf12。

如何打印所有字节?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-20 14:25:25

我更喜欢让我对变量大小的假设变得明确。下面的代码使用标准(虽然通常不使用)宏来定义64位常量,并将这样的量打印为十六进制值。

代码语言:javascript
复制
#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);
}
票数 5
EN

Stack Overflow用户

发布于 2010-04-20 14:25:07

代码语言:javascript
复制
#define MAX 0xdeadbeaf12LL

将告诉编译器使用最长的可用整数类型(无论在哪里使用MAX,它都将被转换为适当的类型)。

在大多数平台上,数字后缀LL将对应于signed long long,在32位系统上为64位(8字节)。C语言优秀的类型系统和编译器警告将为您解决剩下的问题。

然后,您的printf需要使用ll修饰符:

代码语言:javascript
复制
printf(" 0x %2llx \n", MAX);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2672963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档