C:正确的打印方式" unsigned long"十六进制

时间:2015-04-08 08:21:48

标签: c printf

我有一个函数,它将 unsigned long 变量作为参数,我想以十六进制打印。

这样做的正确方法是什么?

目前,我使用 printf “%lx”

void printAddress(unsigned long address) {
    printf("%lx\n", address);
}

我应该为无符号长十六进制查找printf模式吗? (而不仅仅是上面提到的“长十六进制”)

printf 仅使用位将数字转换为十六进制? - 所以我不应该关心这个标志吗?

2 个答案:

答案 0 :(得分:8)

你做得对。

来自the manual page

  

o,u,x,X

     

unsigned int参数转换为无符号八进制(o),无符号十进制(u)或无符号十六进制(x和X)表示法。

因此x的值应始终为unsigned。要使其大小为long,请使用:

  

1

     

(ell)以下整数转换对应于long int或unsigned long int参数[...]

所以%lxunsigned long。但是,地址(指针值)应使用%p打印并转换为void *

答案 1 :(得分:3)

我认为以下格式说明符应该有用 试一试

printf("%#lx\n",address);