在void C / C ++例程结束时添加return语句有什么意义?

时间:2009-03-16 10:22:06

标签: c++ c

我看到签名中带有void返回的函数/方法在函数末尾有一个return语句。这是什么原因,这是否适用于其他语言?

据我所知,如果我想退出函数的末尾,我可以使用return。

一个C示例:

void function(void)
{
   int x = 1 + 2;

   return;    // what do we need this for, if at all?
}

10 个答案:

答案 0 :(得分:23)

这在这里似乎毫无意义。但我的猜测是,这种事情可以用来在IDE中设置一个断点,它不支持在闭合括号中设置断点,并在此处设置断点,可以在监视窗口中检查某些值等。

答案 1 :(得分:16)

有人在字面上采用了“一个函数必须有一个单一的返回”编码指南。

答案 2 :(得分:7)

对于返回void的函数,无关紧要,因为void函数的“从结尾处掉落”只是按照您的预期返回。

然而,有些人喜欢这样做以帮助将来维护。例如,如果有人后来决定将函数的返回类型更改为int,那么如果忘记更改最终的return语句以使其返回int值,则应该得到编译器错误。如果你根本没有返回语句,则返回值是未定义的,许多较旧的编译器都不会警告你(这是真的 - 我已经看过了!)。现在这不是什么大问题,因为大多数现代编译器会警告这些事情。

答案 3 :(得分:5)

我总是在函数结束时包含一个return语句,即使它们没有返回任何内容。我最初的理由是我是明确的,没有关于函数结束的模糊性,我总是被“走出尽头”的函数所困扰。之后,这只是一种习惯,很难打破(如果我想的话)。

答案 4 :(得分:4)

正如您自己提到的,如果要在最后一个语句之前退出函数,则只需要return语句。在给定的示例中,return语句没有任何用处。

答案 5 :(得分:3)

这确实毫无意义......至少对编译器来说,但风格,就像C ++中的许多东西一样。一个例子:

int main ()
{
   DoSomething ();
   return 0;
}

在C ++中,就符合标准的编译器而言,返回0完全没有意义。然而,有时人们更愿意将冗余或无意义的陈述包括在内以便明确。对于程序员的无知,我会犹豫不决这些事情。它只是风格,如果您愿意,可以随意摆脱它。

答案 6 :(得分:3)

它在C / C ++中没用,只是降低了可读性。

需要这个的一个真实语言示例是汇编程序。但是在汇编语言中,return语句不是语言的一部分。相反,你必须调用一个特殊的指令(在x86中),这会导致控制权的返回。除非你这样做,否则执行只会继续,接下来会发生什么取决于可能的因素,包括运气和月相。

答案 7 :(得分:2)

我的猜测是因为函数用于返回某个值而程序员可能会认为它会再次出现。

答案 8 :(得分:2)

我认为你需要它,但你可以拥有它。尝试取出并再次运行程序。看看差异是什么。

答案 9 :(得分:0)