这有效吗?项目会编译吗?我现在无法访问编译器,但我的朋友在他的代码中有这个:
int returnTwice () {
return 1;
return 2;
}
为什么以及如何不合适?
谢谢!
谢谢大家,他们有一些建设性的话。
答案 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)
当函数返回时,它会停止执行。第一次返回执行后的所有内容都将永远不会执行。因此,您应该为此类函数获取“错误:无法访问的代码”。