格式说明符 int * 警告消息

Format specifier int * warning message

我用 scanf 和 printf 编写了简单的 C 程序,例如:

    int n;
    scanf("%d", &n);
    int result = 7 - n;
    printf("%d", &result);

并收到此警告消息:

warning: format '%d' expects argument of type 'int', but argument 2 has type 'int *' [-Wformat=] printf("%d", &result);

我不明白为什么参数 2 的类型是 int * 而不是 int?我该如何解决?

result是整型变量。如果你想打印它的值然后使用 %d 格式说明符 & 只提供参数 result 而不是 &result.

这个

printf("%d", &result);

替换为

printf("%d", result);

如果要打印 result 变量的地址,请使用 %p 格式说明符。

printf("%p", &result); /* printing address */

编辑: %p 格式说明符需要一个 void* 类型的参数。

因此要打印 result 的地址,请将其转换为 void*。例如

printf("%p", (void*)&result); /* explicitly type casting to void* means it works in all cases */

感谢@ajay 指出,我忘了补充这一点。