#include <stdio.h>
int main()
{
int year;
printf("enter year:");
scanf("%d",&year);
if(year%4==0){
printf("%d is a leap year :",&year);
}
else if(year%100==0){
printf("%d is a leap year :",&year);
}
else if(year%400==0){
printf("%d is a leap year :",&year);
}
else{
printf("%d is not a leap year",&year);
}
return 0;
}
为什么我会收到此错误:
format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int \*’
您的代码的意图似乎是:
在内存中分配一个
int
。它的名字是year
。它驻留在一个称为 &year
的地址,它是 int *
,或指向 int 的指针。
scanf
将确定年份的值。您传递 year
的 地址,以便
scanf
知道您想要将值存储在哪里。
现在,完成此操作后,值位于
year
,这是一个int
。但是你用 printf("%d is a leap year :",&year)
来调用 &year
,这是指向 int 或 int *
的指针。
这正是消息所述的内容。我希望这能帮助您将来解释此类消息,因为它们永远不会真正停止......