首页 文章

格式说明符int *警告消息

提问于
浏览
0

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

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

并收到此警告消息:

警告:格式'%d'需要类型'int'的参数,但参数2的类型为'int *'[ - Wformat =] printf(“%d”,&result);

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

1 回答

  • 2

    result 是一个整数变量 . 如果要打印其值,请使用 %d 格式说明符并将参数提供为仅 result 而不是 &result .

    这个

    printf("%d", &result);
    

    用 . . . 来代替

    printf("%d", result);
    

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

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

    Edit : %p 格式说明符需要 void* 类型的参数 .

    所以要打印 result 的地址,将其转换为 void* . 例如

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

    谢谢@ajay指出,我忘了添加这一点 .

相关问题