Вернуть заявление с условиями? а также:

Я очень новичок в c и сейчас читаю классический пример игры TicTacToe. Я не уверен в том, что делает это возвращаемое заявление:

  {.....
     return (ch == X) ?O :X;

Это должно быть какое-то условное утверждение для переменной ch (которая в моем случае обозначает игрока (X или O), но я не уверен в ее значении. Может кто-нибудь сказать, пожалуйста, что он делает?

4 ответа

Решение

Это значит

if (ch == X) 
    return O;
else
    return X;

Это называется троичным оператором, потому что, в отличие от многих других операторов, он принимает не один или два операнда, а три. Булево условие и два значения. В вашем примере, если логическое условие (ch == X) проверяется на true, O является результатом оператора. В противном случае X является результатом.

Это может быть переписано как:

if (ch == X)
    return O;
else
    return X;

Если ch равняется X вернуть O еще вернуться X,

... ? ... : ... Оператор называется троичным оператором. Это сокращение для простого утверждения if. Давайте посмотрим несколько примеров,

Чет / нечет

n % 2 ? printf ("Odd") : printf ("Even");

OR

printf ("%s\n", n % 2 ? "Odd" : "Even");

Факториал

int factorial(int n)
{
    return (n == 0 ? 1 : n * factorial (n - 1));
}
Другие вопросы по тегам