带参数的函数调用如何在 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_SUCCESSEXIT_FAILURE)从 stdlib.h.

传递给 exit 函数

(当然,您通常希望打印程序的结果,或将它们写入文件,以便于查看或保存以供日后使用,但这种区分类型可能对知道,即使它不经常出现。)