gpt4 book ai didi

c - 递归中的返回类型

转载 作者:行者123 更新时间:2023-11-30 18:32:34 25 4
gpt4 key购买 nike

我对以下函数的行为感到困惑。以下是我坚持使用的一些程序:

案例1:

void f()
{
printf("wow\t");
}

int main()
{
f();
return 0;
}

它给出了预期的输出

案例2:

void f()
{
printf("wow\t");
}

int main()
{
f(f());
return 0;
}

它给出了错误:无效使用void表达式,这是显而易见的。

案例3:

int f()
{
printf("wow\t");
}

int main()
{
f(f());
return 0;
}

为什么它给出输出wow wow

f() 的返回类型为 int。但在 main 中它没有存储在任何变量中。此外,f() 没有接受任何参数,但在情况 3 中,它将接受 f() 返回的参数。

相同的代码在 C++ 中不起作用。

最佳答案

代码f(f());从内部函数调用中调用f,然后从外部函数调用中调用f。您不存储 f 的返回值不会执行任何操作。编译器无法仅仅因为忽略函数的返回值而避免调用函数,除非它知道该函数不会产生任何后果,而该函数确实会产生后果。

忽略函数的返回值并不罕见。例如,您可能有一个“删除条目”函数,该函数返回它删除的条目数。您可能会在不关心它返回多少条目的上下文中调用该函数,因此您会忽略返回值。该函数仍然必须运行,否则该条目将不会被删除。哎呀,您忽略了 printf 的返回值。如果它没有被调用,你会感到非常惊讶。

关于c - 递归中的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12037195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com