方法不占用 long long int 值显示错误

method isn't taking long long int value shows error

我正在创建一个使用 long long int 的简单程序,但我遇到了编译器错误。请帮我解决这个错误。

Error] conflicting types for countTrees

我在这一行遇到错误

long long int countTrees(long long int numKeys)

这是我的代码:

#include <stdio.h>
#include <math.h>

int main()
{
    int t;
    scanf("%d", &t);
    while(t--)
    {
        long long int n;
        scanf("%lld", &n);
        long long int result = countTrees(n);
        printf("%lld\n",result);        
    }

return 0;
}  
long long int countTrees(long long int numKeys) {

  if (numKeys <=1) {
    return(1);
  }
  else {
    long long int sum = 0;
    long long int left,right,root;

    for (root=1; root<=numKeys; root++) {
      left = countTrees(root - 1);
      right = countTrees(numKeys - root);

      sum += left*right;
    }

    return(sum);
  }
}

你收到错误,因为 countTrees() 的隐式声明与实际定义不匹配。

为了阐明 "implicit declaration" 函数何时被调用,但编译器尚未看到函数定义,它 假设 函数 returns int 并接受任意数量(和类型)的参数。

C99 和未来的标准中, 隐式声明 无效,因此如果函数尚未定义(或至少. prototyped, through a forward declaration), is used (called).

要解决此问题,您可以执行以下任一操作

  • 添加函数的前向声明。
  • main()之前定义函数。