带参数的函数调用如何在 C 中工作?
How function calls with parameters work in C?
我正在学习 C 并遇到了我很好奇的东西。对我来说,像下面这样在 main 中调用 foo 不会 return 任何东西:
int foo(bar){
return bar * 2;
}
int main(){
foo(10);
}
只有当我用 printf 格式化输出时,它才会 return 从 foo 到 main 的结果。这是故意的还是我错过了什么?以下示例有效:
int foo(bar){
return bar * 2;
}
int main(){
// will return 20
printf("%d\n", foo(10));
}
函数调用 foo(10)
int foo(bar){
return bar * 2;
}
int main(){
foo(10);
}
确实returns值。但是您没有在任何变量中捕获它或打印返回值。您的第二个示例实际上打印了从 foo(10);
返回的值
已经有一个有用的答案,所以这里是一个更技术性的答案:
在你的第二个例子中,你打印了foo(10)
的结果,但是有一种方法可以真正return 来自 C 程序的值。
int main() {
return 14;
}
紧接着 运行 中的脚本 shell、echo $?
(或 Windows 上的 echo %errorlevel%
)将打印程序的退出代码,对于一个简单的 C 程序,它是由 main
编辑的值 return。
通常,值为 0 表示成功,任何其他值表示出现错误或其他错误。生成退出代码的另一种常见方法是将整数(或常量 EXIT_SUCCESS
或 EXIT_FAILURE
)从 stdlib.h
.
传递给 exit
函数
(当然,您通常希望打印程序的结果,或将它们写入文件,以便于查看或保存以供日后使用,但这种区分类型可能对知道,即使它不经常出现。)
我正在学习 C 并遇到了我很好奇的东西。对我来说,像下面这样在 main 中调用 foo 不会 return 任何东西:
int foo(bar){
return bar * 2;
}
int main(){
foo(10);
}
只有当我用 printf 格式化输出时,它才会 return 从 foo 到 main 的结果。这是故意的还是我错过了什么?以下示例有效:
int foo(bar){
return bar * 2;
}
int main(){
// will return 20
printf("%d\n", foo(10));
}
函数调用 foo(10)
int foo(bar){
return bar * 2;
}
int main(){
foo(10);
}
确实returns值。但是您没有在任何变量中捕获它或打印返回值。您的第二个示例实际上打印了从 foo(10);
已经有一个有用的答案,所以这里是一个更技术性的答案:
在你的第二个例子中,你打印了foo(10)
的结果,但是有一种方法可以真正return 来自 C 程序的值。
int main() {
return 14;
}
紧接着 运行 中的脚本 shell、echo $?
(或 Windows 上的 echo %errorlevel%
)将打印程序的退出代码,对于一个简单的 C 程序,它是由 main
编辑的值 return。
通常,值为 0 表示成功,任何其他值表示出现错误或其他错误。生成退出代码的另一种常见方法是将整数(或常量 EXIT_SUCCESS
或 EXIT_FAILURE
)从 stdlib.h
.
exit
函数
(当然,您通常希望打印程序的结果,或将它们写入文件,以便于查看或保存以供日后使用,但这种区分类型可能对知道,即使它不经常出现。)