我对 C 中的 return 语句有一个疑问,它真正从哪里返回:
int base(int a)
{
if(a == 1)
return 0;
}
int inherit()
{
base(1);
// the rest of the code
}
Run Code Online (Sandbox Code Playgroud)
因此,在该inherit()函数中,base()被调用,并执行return 0, 在本例中;其余代码inherit()仍然执行吗?return 语句实际上是如何工作的?
您的代码有点太少了,不舒服。我会感到更高兴的是:
\n\nint base(int a)\n{\n if (a == 1)\n return 0;\n return 37;\n}\n\nint inherit(void)\n{\n int n = base(1);\n printf("Base(1) is %d\\n", n);\n return n + 3;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n当inherit()调用时base(),会存储其当前状态,base()运行该函数并返回一个值。在此代码中,返回值被捕获在变量中,然后在调用和insiden中使用。这就是工作原理:它单方面停止当前函数的执行并继续调用函数。printf()returninherit()return
即使在 中main(), areturn也会终止当前函数并向调用函数返回一个值,即 C 运行时 \xe2\x80\x94 并且 C 运行时确保进程退出,通常将返回值中继到“环境” (例如 Unix 上的 shell 程序)。
请注意,修改后的代码确保base()始终返回一个值。不这样做通常会导致未定义的行为。如果仅使用值作为参数来调用该函数1,那就“OK”,但是为什么您首先要调用该函数呢?因此,始终确保如果函数应该返回一个值,则该函数的所有返回值(特别包括函数末尾的返回值)都会返回一个值。return在原始代码中,最后没有\xe2\x80\x94 这很糟糕!
| 归档时间: |
|
| 查看次数: |
30955 次 |
| 最近记录: |