C ++不止一次返回?

时间:2014-11-20 17:22:09

标签: c++ return

这有效吗?项目会编译吗?我现在无法访问编译器,但我的朋友在他的代码中有这个:

int returnTwice () {
  return 1;
  return 2;
}

为什么以及如何不合适?

谢谢!

谢谢大家,他们有一些建设性的话。

4 个答案:

答案 0 :(得分:4)

部分有效。

无效部分是您尝试在表达式中声明变量,这是不允许的。但是通过多个无条件return语句没有任何违法行为,但只会执行第一个语句。

答案 1 :(得分:0)

不,这在C ++或我所知的任何其他编程语言中是不可能的。

作为回答您问题的另一位用户说,只会执行第一个return语句。完全取决于编译器,它可能给你一个错误或警告你在一个已定义的范围内有两个return函数,这里没有语法错误。

通过将每个变量放入向量并将其返回,可以在C ++中返回两个或多个值,如documented in this question.

A return返回分配给它的值并退出该函数。

在其他编程语言中,例如Lua可以使用return variable1, variable2;

答案 2 :(得分:0)

在C ++中不可能。但是,如果您想要类似的行为,可以使用boost::tuple

boost::tuple<double,double> figInfo(const Figure& fig)
{
  double p = fig.getPerimeter();
  double s = fig.getSurface();
  return boost::make_tuple(p,s);
}

boost::tuple<std::string, unsigned short int, std::string> profile()
{
  std::string first_name = "Christophe";
  unsigned short int age = 29;
  std::string address = "Unspecified";
  return boost::make_tuple(first_name, age, address);
}

答案 3 :(得分:-3)

当函数返回时,它会停止执行。第一次返回执行后的所有内容都将永远不会执行。因此,您应该为此类函数获取“错误:无法访问的代码”。