【问题标题】:How can I pass a long type value into the parameter of a function with integer as the return type?如何将长类型值传递给以整数作为返回类型的函数的参数?
【发布时间】:2021-04-02 14:48:46
【问题描述】:

我在设置函数代码时遇到问题。错误消息显示:冲突类型。

所以我认为是因为我的返回类型与参数中的值不同。所以我想知道参数中是否可以有不同类型的值以及如何修复此代码。

//prompt user to enter the credit card number and print it on screen
long get_credit()
{
   long credit_number = get_long("Number: ");
   //printf("Number: %li\n",credit_number); //debugging
  return credit_number;
}

//digits lengther
int get_digit(long credit_number)
{
       long credit = credit_number; //length of the number of digits given by the user
       int length = 0;
       while(credit != 0)
       {
       credit = credit/10 ;
       length ++ ;
       }
       return length;
}

这是它显示给我的错误消息。

credit_v2.c:154:5: error: conflicting types for 'get_digit'
int get_digit(long credit_number)
    ^
credit_v2.c:7:5: note: previous declaration is here
int get_digit(void); //calculate the number of digits
    ^

再次感谢大家的帮助!

【问题讨论】:

  • 将行 int get_digit(void); 更改为 int get_digit(long credit_number);。这是 credit_v2.c 的第 7 行

标签: c function types


【解决方案1】:

您收到此错误是因为函数的原型与定义不匹配。

正如错误消息所述,您将函数声明为 int get_digit(void);,即不带参数并返回 int 的函数。但是,该函数的定义表明它采用long 类型的单个参数。

您需要使原型与定义相匹配。

int get_digit(long credit_number); //calculate the number of digits 

【讨论】:

    【解决方案2】:

    更改第 7 行,从:

    int get_digit(void);
    

    到:

    int get_digit(long credit_number);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      • 2021-03-25
      相关资源
      最近更新 更多