printf格式(%d与%u)

15 c formatting printf pointers

打印指针地址%d%u打印时有什么区别?

例如:

int a = 5;
// check the memory address
printf("memory address = %d\n", &a); // prints "memory address = -12"
printf("memory address = %u\n", &a); // prints "memory address = 65456"
Run Code Online (Sandbox Code Playgroud)

GMa*_*ckG 28

您可以在此页面上找到格式转义列表.

%d是有符号整数,%u而是无符号整数.指针(当被视为数字时)通常是非负的.

如果您确实想要显示指针,请使用%p格式说明符.

  • 有趣的是,他的例子显示了负值!这取决于机器,但我想说,带有前导一位的地址在 32 位机器上相当常见,但在 64 位机器上则较少。 (2认同)

ala*_*min 7

%u打印无符号整数

%d打印有符号整数

要获取指针地址,请使用%p

其他格式转义符列表:

这是格式化转义符的完整列表。我只是从此页面截屏

在此处输入图片说明


Luc*_*eis 6

如果我正确理解您的问题,您需要%p显示指针正在使用的地址,例如:

int main() {
    int a = 5;
    int *p = &a;
    printf("%d, %u, %p", p, p, p);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

将输出如下内容:

-1083791044, 3211176252, 0xbf66a93c
Run Code Online (Sandbox Code Playgroud)