Как я могу проверить, равны ли несколько переменных одному и тому же значению?

Как сравнить несколько элементов? Например, я хочу проверить, равны ли все переменные A, B и C char 'X', или все три равны 'O'. (Если 2 из них X, а один - O, он должен возвращать false.)

Я пробовал:

if (A, B, C == 'X' || A, B, C == 'O') 
  {
    //Do whatever
  }

но это не сработало. Каков наилучший способ сделать это?

Ответ 1

if((A == 'X' || A == 'O') && A == B && B == C)
{
    // Do whatever
}

Ответ 2

Просто для разнообразия:

template <typename T, typename U>
bool allequal(const T &t, const U &u) {
    return t == u;
}

template <typename T, typename U, typename... Others>
bool allequal(const T &t, const U &u, Others const &... args) {
    return (t == u) && allequal(u, args...);
}

if (allequal(a,b,c,'X') || allequal(a,b,c,'O')) { ... }

Ответ 3

Просто отделите их и проверьте их один за другим:

if (A == 'O' && B == 'O' && C == 'O' || A == 'X' && B == 'X' && C == 'X')
    // etc