gpt4 book ai didi

c - 返回语句在 C 中如何工作?

转载 作者:太空宇宙 更新时间:2023-11-04 05:12:35 26 4
gpt4 key购买 nike

我对 C 中的 return 语句有疑问,它真正从哪里返回:

int base(int a)
{
if(a == 1)
return 0;
}

int inherit()
{
base(1);
// the rest of the code
}

因此在inherit()函数中,调用了base(),并执行了return 0,在本例中; inherit() 中的其余代码是否仍然执行? return 语句是如何真正起作用的?

最佳答案

您的代码有点太简陋了。我会更开心:

int base(int a)
{
if (a == 1)
return 0;
return 37;
}

int inherit(void)
{
int n = base(1);
printf("Base(1) is %d\n", n);
return n + 3;
}

inherit() 调用 base() 时,它的当前状态被存储,函数 base() 运行,并返回一个值。在此代码中,返回值被捕获在变量 n 中,然后在 printf() 调用和 return 中使用继承()。这就是 return 的工作原理:它单方面停止当前函数的执行并继续调用函数。

即使在 main() 中,return 也会终止当前函数并将一个值返回给调用函数,即 C 运行时 — C 运行时确保进程退出,通常将返回值中继到“环境”(例如 Unix 上的 shell 程序)。

请注意,修改后的代码确保 base() 始终返回一个值。不这样做通常会导致未定义的行为。如果仅使用值 1 作为参数调用该函数,那么它会是“OK”,但您为什么要首先调用该函数。因此,请始终确保如果一个函数应该返回一个值,则该函数的所有返回值(尤其包括函数末尾的返回值)都会返回一个值。在原始代码中,末尾没有 return — 这很糟糕!

关于c - 返回语句在 C 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32972089/

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