Вопрос

int qempty()
{
    return (f == r ? 1 : 0);
}

В приведенном выше фрагменте что означает "?" иметь в виду?Чем мы можем его заменить?

Это было полезно?

Решение

Это обычно называют условный оператор, и при использовании следующим образом:

condition ? result_if_true : result_if_false

...если condition оценивается как true, выражение оценивается как result_if_true, в противном случае оно оценивается как result_if_false.

Это синтаксический сахар, и в этом случае его можно заменить на

int qempty()
{ 
  if(f == r)
  {
      return 1;
  } 
  else 
  {
      return 0;
  }
}

Примечание: Некоторые люди ссылаются на ?: это как "тернарный оператор", поскольку это единственный тернарный оператор (т.е.оператор, принимающий три аргумента) на используемом языке.

Другие советы

Это тернарный оператор, по сути это встроенный оператор if.

x ? y : z

работает как

if(x) y else z

за исключением того, что вместо утверждений у вас есть выражения;поэтому вы можете использовать его в середине более сложного оператора.

Он полезен для написания краткого кода, но его можно использовать слишком часто для создания сложного в сопровождении кода.

Вы можете просто переписать его как:

int qempty(){ return(f==r);}

Что делает то же самое, что сказано в других ответах.

Это называется условный оператор.

Вы можете заменить его на:

int qempty(){ 
    if (f == r) return 1;
    else return 0;
}

Это условный оператор.

а?б:с

Это сокращение для IF/THEN/ELSE.

означает:если a истинно, верните b, иначе верните c.В этом случае, если f==r, верните 1, иначе верните 0.

Просто примечание, если вы когда-нибудь увидите это:

a = x ? : y;

Это расширение GNU стандарта (см. https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals).

Это то же самое, что

a = x ? x : y;

Знак вопроса является условным оператором.Код означает, что если f==r, то возвращается 1, в противном случае возвращается 0.Код можно переписать как

int qempty()
{
  if(f==r)
    return 1;
  else
    return 0;
}

это, вероятно, не самый чистый способ сделать это, но, надеюсь, поможет вашему пониманию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top