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

C++ 仅使用一个函数调用输出分数,c++,C++,我试着检查分数并输出谁赢过。黑色>0,白色0?你为什么不想使用一个变量呢?如果这样做,可以使用复合三元运算符: int val = GetValue(board); cout << val == 0 ? "Tie" : (val < 0 ? "White wins" : "Black wins"); (也不要实际使用它)为什么不使用变量?如果这样做,可以使用复合三元运算符: int val = GetValue(board); cout << val == 0 ?

我试着检查分数并输出谁赢过。黑色>0,白色<0,平局==0。在不再次调用函数或使用其他变量的情况下,如何查看GetValue(board)==0

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

GetValue(板)>0?你为什么不想使用一个变量呢?如果这样做,可以使用复合三元运算符:

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

(也不要实际使用它)

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

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

(也不要实际使用它)

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

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

这假设
GetValue
返回-1、0或1

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

cout << msg[ GetValue(board) + 1] << endl;
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) );
这假设
GetValue
返回-1、0或1

std::字符串赢_消息(int const&x)
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) );
{ 如果(x==0)返回“平局”; 如果(x<0)返回“黑赢”; 返回“白赢”; } // ... cout
std::字符串赢_消息(int const&x)
{
如果(x==0)返回“平局”;
如果(x<0)返回“黑赢”;
返回“白赢”;
}
// ...


不能使用变量并获取BWG的代码。。。如果返回值只有-1、0和1,则可以使用switch语句。请注意,不使用局部变量不会获得任何性能。使用单个调用是否如此重要?@saadtaame是的,这是我老师的限制之一。我想做一个常规的if(GetValue(board)==0),但是如果GetValue(board)=0,我就需要在else中再次使用它。我真的不知道该怎么做。如果我设置score=GetValue(board);,我使用的分数是BWG回答的两倍,这算多个电话吗?这是一个很好的方法。将值存储在变量中并使用该变量。它算作一次调用。使用一个变量并获取BWG的代码。。。如果返回值只有-1、0和1,则可以使用switch语句。请注意,不使用局部变量不会获得任何性能。使用单个调用是否如此重要?@saadtaame是的,这是我老师的限制之一。我想做一个常规的if(GetValue(board)==0),但是如果GetValue(board)=0,我就需要在else中再次使用它。我真的不知道该怎么做。如果我设置score=GetValue(board);,我使用的分数是BWG回答的两倍,这算多个电话吗?这是一个很好的方法。将值存储在变量中并使用该变量。在这种情况下,我宁愿使用switch语句。不必担心GetValue是否返回错误的值。@NeilKirk我同意,他可以做
签名(GetValue(board))
这样它“钳制”到-1/0/1I,我同意。我不知道OP为什么需要一个函数调用:在这种情况下,DI宁愿使用switch语句。不必担心GetValue是否返回错误的值。@NeilKirk我同意,他可以做
签名(GetValue(board))
这样它“钳制”到-1/0/1I,我同意。我不知道OP为什么想要一个单一的函数调用:这当然是一个聪明的单行程序!然而,我不建议在实践中使用它,不仅是为了可读性,而且每次都会分配新字符串。一个STD::const char数组可能会更好。@ BWG哈哈,我不知道C++中lambda表达式的语法,但这是真的,从你有函数编程的那一刻起,你就尝试用一行来做任何事情,即使在Scala中也不例外,即使读起来也不是很好。然而,我不建议在实践中使用它,不仅是为了可读性,而且每次都会分配新字符串。一个STD::const char数组可能会更好。@ BWG哈哈,我不知道C++中lambda表达式的语法,但这是真的,从你有函数编程的那一刻起,你就尝试用一行来做任何事情,我在Scala中也这样做,即使它并不总是对可读性有利。为什么要将其作为引用?@NeilKirk他指定不使用变量为什么要将其作为引用?@NeilKirk他指定不使用变量