【发布时间】:2015-06-13 02:30:13
【问题描述】:
我有一个函数,它获取一个 unsigned long 变量作为参数,我想用十六进制打印它。
正确的做法是什么?
目前,我使用 printf 和 "%lx"
void printAddress(unsigned long address) {
printf("%lx\n", address);
}
我应该寻找 unsigned 长十六进制的 printf 模式吗? (而不仅仅是上面提到的“长十六进制”)
或者 printf 是否仅使用位将数字转换为十六进制? - 所以我不应该关心这个标志吗?
编辑/澄清
这个问题源于一个混淆:十六进制只是表达位的另一种方式,这意味着有符号/无符号数只是一种解释。因此,类型为 unsigned 长这一事实不会更改十六进制数字。无符号只是告诉你如何在你的计算机程序中解释这些相同的位。
【问题讨论】:
-
请查阅友好文档。
-
%lx遇到什么问题?这对于 unsigned long 应该没问题。当然,如果您的address参数确实是一个地址,那么您可能应该将它作为void *传递并使用%p打印它。 -
printf缺少的是一种打印有符号的十六进制数字...的方法 -
实际上我现在看到在 cplusplus.com 中非常大胆地写着“x”是无符号十六进制。你是对的,我的问题不是很有用......
-
@SomethingSomething:正如接受的答案所表明的那样,它实际上是微不足道的,即手册包含对您问题的直接答案。在 Stack Overflow 上发帖并没有增加任何内容。