更简洁的方式来编写以下语句

Ala*_*lan 5 c++

是否有更简洁的方法来编写以下C++语句:

int max = 0;

int u = up();
if(u > max)
{
 max = u;
}

int d = down();
if(d > max)
{
max = d;
}

int r = right();
max = r > max ? r : max;  
Run Code Online (Sandbox Code Playgroud)

具体是有一种方法可以在if语句/三元运算符中嵌入函数返回的赋值吗?

Jon*_*eet 9

假如说:

  • 当时的想法是,除去局部变量(即你不需要u,d,r后来)
  • 评估顺序无关紧要

...然后你可以使用std::max:

int m = max(max(max(0, up()), down()), right());
Run Code Online (Sandbox Code Playgroud)

如果这是函数的返回值:

return max(max(max(0, up()), down()), right());
Run Code Online (Sandbox Code Playgroud)

请注意,它可以按任何顺序评估函数,而不是原始代码中的字符串向上,向下,向右排序.

  • @bortao:我假设问题的全部意义在于使它们变得不必要。 (2认同)