gpt4 book ai didi

c - 从指针打印地址时,%lx 和 %ld 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 15:10:58 25 4
gpt4 key购买 nike

我已经尝试用谷歌搜索第一个 %lx,但我没有得到好的结果,但我已经成功搜索了 %ld,它只是一个 long int。我猜是打印地址所必需的,但是 %lx 是做什么用的?

这是我感到困惑的地方:

int main()
{
int value = 25;
int *pointer = &value;
printf("%ld\n", pointer); // prints out the address of variable value( I hope)
printf("0x%lx\n", pointer); // Completely confused here, is this perhaps address in hex?
}

如果有人能消除我的困惑就太好了!

我已经运行了这段代码,并且得到了结果,但我仍然不确定 lx 的作用。我认真地尝试在 google 中搜索这个“%lx”,但没有结果可以解释它。

编辑:如果我使用“p”来打印地址,那么我认为 %ld 打印地址是不是错了?困惑。

最佳答案

它们都是未定义的行为。

要用 printf 打印指针,您应该将指针转换为 void * 并使用 "%p"

也就是说:

在尝试打印整数时,我们可以讨论 "%ld""%lx" 之间的区别。 %ld 需要一个long int 类型的变量,%lx 需要一个long unsigned int 类型的变量。

或多或少,xodu 之间的区别在于数字如何将被打印出来。

  • x 以十六进制打印无符号数。
  • o 以八进制打印一个无符号数。
  • u 打印一个无符号的十进制数。
  • d 打印一个带符号的十进制数。
  • i 打印一个带符号的十进制数。

然后我们可以将 l 附加到像 %lx 这样的格式的格式字符串,以指定我们使用的不是 int long int(即 unsigned long intlong int)。

cppreference 中有一个表,其中包含其他信息:http://en.cppreference.com/w/c/io/fprintf

关于c - 从指针打印地址时,%lx 和 %ld 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26223642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com