仅使用一个函数调用输出分数

时间:2014-10-05 23:22:09

标签: c++

我试图检查得分并输出谁赢了。黑> 0,白色< 0,并且领带是== 0.如果没有再次调用我的函数或使用其他变量,我应该怎么做才能看到GetValue(board)== 0?

GetValue(board) > 0 ? cout << "Black wins" : cout << "White wins"; 

3 个答案:

答案 0 :(得分:2)

为什么不想使用变量?如果这样做,您可以使用复合三元运算符:

int val = GetValue(board);
cout << val == 0 ? "Tie" : (val < 0 ? "White wins" : "Black wins");

编辑:但这不是一条线,是吗?真正的一个班轮,由lambda功能提供。
它还假设GetValue返回一个int。并且需要using namespace std来简洁。

cout << vector<string>({"White wins", "Tie", "Black Wins"})[([](int x){return(0<x)-(x<0)+1;}(GetValue(board)))];

(也不要实际使用)

答案 1 :(得分:1)

如果您想通过一个函数调用输出得分,您可以执行以下操作:

cout << msg[ GetValue(board) + 1] << endl;

其中:

msg[0] = "White Wins";
msg[1] = "Tie";
msg[2] = "Black Wins";

这假定GetValue返回-1,0或1;

答案 2 :(得分:1)

std::string win_message(int const &x)
{
    if ( x == 0 ) return "Tie";
    if ( x < 0 ) return "Black wins";
    return "White wins";
}

// ...

    cout << win_message( GetValue(board) );