格式说明符int *警告消息

时间:2018-05-21 06:08:25

标签: c pointers format-specifiers

我用scanf& amp;编写简单的C程序printf like:

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

并收到此警告消息:

  

警告:格式'%d'期望类型' int'的参数,但参数2   有类型' int *' [-Wformat =]         printf("%d",& result);

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

1 个答案:

答案 0 :(得分:2)

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指出,我忘了补充这一点。