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