int qempty()
{
return (f == r ? 1 : 0);
}
Что означает " ? " В приведенном выше фрагменте ? Чем его можно заменить?
c++
operators
ternary-operator
Thaier Alkhateeb
источник
источник
Ответы:
Обычно его называют условным оператором , и когда он используется следующим образом:
... если
condition
вычисляется значениеtrue
, выражение оценивается какresult_if_true
, иначе оно оценивается какresult_if_false
.Это синтаксический сахар , и в этом случае его можно заменить на
int qempty() { if(f == r) { return 1; } else { return 0; } }
Примечание. Некоторые люди называют
?:
его « тернарным оператором », потому что это единственный тернарный оператор (т. Е. Оператор, который принимает три аргумента) на языке, который они используют.источник
a? b : c
синтаксический сахар для[&]() -> Type { if (a) return b; else return c; }()
.Это тернарный оператор, в основном это встроенный оператор if
работает как
if(x) y else z
except, вместо операторов у вас есть выражения; так что вы можете использовать его в середине более сложного оператора.
Это полезно для написания сжатого кода, но может использоваться чрезмерно для создания сложного в поддержке кода.
источник
Вы можете просто переписать это как:
int qempty(){ return(f==r);}
Что делает то же самое, что и в других ответах.
источник
Просто примечание, если вы когда-нибудь это увидите:
Это расширение стандарта GNU (см. Https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals ).
Это то же самое, что и
источник
x = 1+1 ? : 0
; правильно возвращается2
в моем компиляторе, и это ни на что не жаловалось.Это называется условным оператором .
Вы можете заменить его:
int qempty(){ if (f == r) return 1; else return 0; }
источник
Это условный оператор.
а? до н.э
Это ярлык для IF / THEN / ELSE.
означает: если a истинно, вернуть b, иначе вернуть c. В этом случае, если f == r, вернуть 1, иначе вернуть 0.
источник
Знак вопроса - это условный оператор. Код означает, что если f == r, то возвращается 1, в противном случае возвращается 0. Код можно переписать как
int qempty() { if(f==r) return 1; else return 0; }
что, вероятно, не самый чистый способ сделать это, но, надеюсь, поможет вам понять.
источник