我有一个函数,它将 unsigned long 变量作为参数,我想以十六进制打印。
这样做的正确方法是什么?
目前,我使用 printf 与“%lx”
void printAddress(unsigned long address) {
printf("%lx\n", address);
}
我应该为无符号长十六进制查找printf模式吗? (而不仅仅是上面提到的“长十六进制”)
或 printf 仅使用位将数字转换为十六进制? - 所以我不应该关心这个标志吗?
答案 0 :(得分:8)
你做得对。
o,u,x,X
unsigned int参数转换为无符号八进制(o),无符号十进制(u)或无符号十六进制(x和X)表示法。
因此x
的值应始终为unsigned
。要使其大小为long
,请使用:
1
(ell)以下整数转换对应于long int或unsigned long int参数[...]
所以%lx
是unsigned long
。但是,地址(指针值)应使用%p
打印并转换为void *
。
答案 1 :(得分:3)
我认为以下格式说明符应该有用 试一试
printf("%#lx\n",address);