C++ 如何在同一行内打印和返回?
我知道这样的事情是可能的,我只是忘了如何正确地去做C++ 如何在同一行内打印和返回?,c++,syntax,C++,Syntax,我知道这样的事情是可能的,我只是忘了如何正确地去做 if (true) printf("something"), return; return不是表达式,因此不能是逗号运算符的操作数 以下是一个(简单的)单行版本: if (true) { printf("something"); return; } (注意:一行的简洁性被高估了。写作是为了可读性,而不是简洁性,如果它们一致,则是双赢的。当然,我自己应该更多地听从我的建议……) 编辑:您可能正在考虑的是 if (true) retur
if (true)
printf("something"), return;
return
不是表达式,因此不能是逗号运算符的操作数
以下是一个(简单的)单行版本:
if (true) { printf("something"); return; }
(注意:一行的简洁性被高估了。写作是为了可读性,而不是简洁性,如果它们一致,则是双赢的。当然,我自己应该更多地听从我的建议……)
编辑:您可能正在考虑的是
if (true) return (void) printf("something"); // for void functions
if (true) return printf("something"), 0; // for an e.g. int function
这是可行的,但丑陋和刻薄,因为它掩盖了返回的内容。我不赞成它们的使用。如果返回类型是
std::list
,那么您需要返回std::list
。您不能简单地什么都不返回,这正是您的代码所要做的
快速解决方法是:
if (true)
{
printf("something");
return {};
}
使用此选项将返回一个空的std::list
。然后,无论调用什么函数,都必须检查空列表
在C++17中,我们有一个允许我们返回可选值的函数:它可以是值,也可以没有值 因此,您可以将函数签名更改为返回
std::optional
,如下所示:
std::optional<std::list<int>> getList()
{
if (true)
return {};
...
}
她的例子很小:@Vojin…调用printf中的函数(返回)。例如:printf(“某物”,functioncall);函数的返回类型是什么?和(假设类型不是
void
)您打算返回什么值?返回类型是std::list@Peter很好的调用,我从没想过OP可能在一个非void
函数中。事实上,您需要返回预期的类型。我曾想过类似的方法,但语法对我不起作用。
auto l = getList();
if (l.has_value()) //or simply if (l)
{
//Do something with l.value() //or simply *l
}