方法不占用 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()
之前定义函数。
我正在创建一个使用 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()
之前定义函数。