gpt4 book ai didi

c - printf 指针参数类型警告?

转载 作者:行者123 更新时间:2023-11-30 16:16:16 24 4
gpt4 key购买 nike

有什么好的方法可以消除以下警告吗?我知道这是一个类型问题,因为我传递的是 unsigned long 指针 而不是 unsigned long,但是 printf 是否以某种方式支持指针作为参数?我内心的迂腐希望摆脱这个警告。如果没有,如何使用 printf 处理打印取消引用的指针值?

#include <stdio.h>

int main (void) {
unsigned long *test = 1;
printf("%lu\n", (unsigned long*)test);
return 0;
}

警告:格式指定类型“unsigned long”,但参数具有类型

最佳答案

unsigned long *test = 1;

不是有效的 C。如果您想要一个指向值为 1 的对象的指针,您可以这样做:

unsigned long a = 1;
unsigned long *test = &a;

或使用 C99 复合文字:

unsigned long *test = &(unsigned long){1UL};

现在还有:

printf("%lu\n", (unsigned long*)test);

不正确。你实际上想要:

printf("%lu\n", *test);

打印unsigned long对象*test的值。

要打印 test 指针值(以实现定义的方式),您需要:

printf("%p\n", (void *) test);

关于c - printf 指针参数类型警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56691096/

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