Вернуть заявление с условиями? а также:
Я очень новичок в c и сейчас читаю классический пример игры TicTacToe. Я не уверен в том, что делает это возвращаемое заявление:
{.....
return (ch == X) ?O :X;
Это должно быть какое-то условное утверждение для переменной ch (которая в моем случае обозначает игрока (X или O), но я не уверен в ее значении. Может кто-нибудь сказать, пожалуйста, что он делает?
4 ответа
Это называется троичным оператором, потому что, в отличие от многих других операторов, он принимает не один или два операнда, а три. Булево условие и два значения. В вашем примере, если логическое условие (ch == X)
проверяется на true, O является результатом оператора. В противном случае X является результатом.
Это может быть переписано как:
if (ch == X)
return O;
else
return 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));
}