当我执行此代码时,为什么会出现错误?

时间:2013-10-12 07:47:18

标签: pointers syntax-error

#include <stdio.h>
#include <stdlib.h>
int main ()
{
    int a=2,*p;
    p=&a;
    printf ("address of a=%u", p);
    return (0);
}

当我在Ubuntu上执行此代码时,它将打印此错误:

format '%u' expects argument of type 'unsigned int', 
but argument 2 has type 'int *' [-wformat].

为什么即使在书中的代码中出现这种类型的错误?我知道这是一个愚蠢的问题,但我很困惑。

1 个答案:

答案 0 :(得分:4)

  

当我在ubuntu上执行此代码时,它将打印此错误:

瑙。当您编译时,它会打印出来。

那是因为%u is not suited for printing pointers。为此目的使用%p。的 And do read the documentation