错误:“格式‘%d’需要‘int’类型的参数,但参数 2 的类型为‘int\*’”

问题描述 投票:0回答:1
#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 \*’
c arguments printf
1个回答
0
投票

您的代码的意图似乎是:

  1. 在内存中分配一个

    int
    。它的名字是
    year
    。它驻留在一个称为
    &year
    的地址,它是
    int *
    ,或指向 int 的指针。

  2. scanf
    将确定年份的值。您传递 year
    地址
    ,以便
    scanf
    知道您想要将值存储在哪里。

  3. 现在,完成此操作后,位于

    year
    ,这是一个
    int
    。但是你用
    printf("%d is a leap year :",&year)
    来调用
    &year
    ,这是指向 intint *
    指针。

这正是消息所述的内容。我希望这能帮助您将来解释此类消息,因为它们永远不会真正停止......

© www.soinside.com 2019 - 2024. All rights reserved.