【发布时间】:2021-10-28 23:49:54
【问题描述】:
我们都知道return语句结束被调用函数的执行并向调用函数返回一些值,但是在下面给出的情况下,我不接受用户定义函数通过任何变量或作为另一个函数中的参数,例如 printf 那么为什么 main 打印 Hello ,根据我的想法 main 的执行应该在打印 5 后结束,因为 0 返回给它,我已经搜索过了在各种平台上,但他们只是说 main 忽略返回的值(但为什么以及如何?)
#include <stdio.h>
//Compiler version gcc 6.3.0
int main()
{
printf("%d\n",6);
Array();
printf("Hello\n");
return 0;
}
int Array()
{
int c=5;
printf("%d\n",c);
return 0;
}
【问题讨论】:
-
当某些函数返回
0时,为什么main会结束?返回任何值都没有问题。 -
有趣的是,您关注的是
Array(),但您的代码更频繁地忽略了printf的返回值——这就是它的工作原理。如果不使用返回值,则会被忽略。 -
也要注意编译器警告,代码格式不正确。
-
Array()在被调用之前是未知的。这是一个坏主意,在现代 C 中是被禁止的 -
返回 0 from main 和返回 0 to main 之间有很大的不同。 main 中的语句
return 0;将导致 main 在该点结束,因为您正在返回 0 from main。但是Array函数中的return 0;只会导致Array函数结束。它不会对 main 产生任何影响,因为您正在返回 0 到 main,而 main 只是忽略返回的值。
标签: c return return-value