Что значит '?' делать в C ++?

c++ operators ternary-operator

181051 просмотра

7 ответа

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

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

Автор: Thaier Alkhateeb Источник Размещён: 12.11.2019 09:52

Ответы (7)


114 плюса

Решение

Обычно это называют условным оператором , и при использовании так:

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;
  }
}

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

Автор: Daniel LeCheminant Размещён: 27.04.2009 09:09

14 плюса

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

x ? y : z

работает как

if(x) y else z

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

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

Автор: Richard Размещён: 27.04.2009 09:11

6 плюса

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

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

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

Автор: Размещён: 27.04.2009 09:49

5 плюса

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

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

int qempty(){ 
    if (f == r) return 1;
    else return 0;
}
Автор: jjnguy Размещён: 27.04.2009 09:12

3 плюса

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

а? до н.э

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

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

Автор: Joe Размещён: 27.04.2009 09:10

3 плюса

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

a = x ? : y;

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

Это так же, как

a = x ? x : y;
Автор: Nick Kossifidis Размещён: 22.11.2015 06:38

2 плюса

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

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

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

Автор: ssakl Размещён: 27.04.2009 09:14
Вопросы из категории :
32x32