在C中打印不带变量的函数的值

p3rjfoxz  于 2022-12-02  发布在  其他
关注(0)|答案(2)|浏览(101)

让我们假设下面的c代码:

#include <stdio.h>
#include <cs50.h>

int test (int a, int b);

int main(void)
{
   test(2,3);
}

int test (int a, int b)
{
 int c = a+b;
 printf("%d \n", test(a,b));
 return c;

}

为什么不可能打印test的值而不需要在打印变量之前将其保存在变量中?我得到了错误:
功能。c:12:1:错误:通过此函数的所有路径都将调用其自身[-Werror,-Winfinite-recursion]
谢谢你,谢谢你

#include <stdio.h>
#include <cs50.h>

int test (int a, int b);

int main(void)
{
   test(2,3);
}

int test (int a, int b)
{
 int c = a+b;
 printf("%d \n", test(a,b));
 return c;

}
pvcm50d1

pvcm50d11#

正如编译器消息所说,函数将调用自身,因为在printf("%d \n", test(a,b));中,代码test(a,b)调用test。在对test的调用中,函数将再次调用自身,并且这将永远重复(直到C实现的极限)。
若要打印函数的返回值,请在函数外部执行:

#include <stdio.h>

int test(int a, int b);

int main(void)
{
    printf("%d\n", test(2, 3));
}

int test(int a, int b)
{
    return a+b;
}
hgqdbh6s

hgqdbh6s2#

错误信息很清楚,test-function调用它自己,在 that 调用中,它再次调用它自己(一次又一次......)。
它永远不会完成。
这是一种无限循环,通常称为***无限递归***。
也许你想要的是什么?

#include <stdio.h>
#include <cs50.h>

int test (int a, int b);

int main(void)
{
   test(2,3);
}

int test (int a, int b)
{
 int c = a+b;
 printf("%d \n", c); // Show the result of the calculation
                     // but without calling this function again.
 return c;

}

相关问题