C++不止一次返回?
这是否有效?项目是否会编译?我目前无法访问编译器,但是我的朋友在他的代码中有这样的代码:C++不止一次返回?
int returnTwice() {
return 1;
return 2;
}
为什么以及这是不恰当的?
谢谢!
谢谢大家有些建设性的话。
函数返回时,它停止执行。第一次执行后的所有内容都不会执行。因此,你应该得到一个“Error:unreachable code”这样的函数。
这将是一个警告,而不是一个错误,它完全由编译器决定 - 标准没有强制它。 – 2014-11-20 17:25:45
是的,我一直认为这会更好。我从来没有这样看过。 – DaaaahWhoosh 2014-11-20 17:27:57
这是部分有效。
无效的部分是您尝试在表达式中声明变量,这是不允许的。但是有多个无条件return
声明没有任何违法,但只有第一个将被执行。
不,这在C++或其他任何我知道的编程语言中是不可能的。
正如另一位回答您问题的用户所说,只有第一个return
声明将被执行。完全取决于编译器,它可能可能给你一个错误或警告,你在一个定义的范围内有两个return
函数,这里没有语法错误。
,能够通过将每个变量到载体并将其返回在C返回两个或多个值++,如documented in this question.
甲return
返回分配给它的值和退出的功能。
在诸如Lua
的其他编程语言中可以使用return variable1, variable2;
。
Python中也是如此(在我看来比Lua更受欢迎)。 – Caduchon 2014-11-20 17:42:20
@Caduchon我相信''返回''这种方式在大多数'原始'语言中都是支持的,''''''''''''我认为'Java'也是。 – cybermonkey 2014-11-20 21:20:09
这在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);
}
而“朋友”的意思是“家庭作业”? – JJJ 2014-11-20 17:23:22
如果你有互联网,那么你有一个编译器。 http://ideone.com – 2014-11-20 17:24:36
当然,你可以访问一个编译器:例如http://ideone.com。 – 2014-11-20 17:24:45