Что значит '?' делать в С++?
int qempty()
{
return (f == r ? 1 : 0);
}
В приведенном выше фрагменте, что означает "?"? Что мы можем заменить?
Ответы
Ответ 1
Это обычно называют условным оператором и при использовании следующим образом:
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;
}
}
Примечание. Некоторые люди относятся к ?:
как " тернарный оператор", потому что это единственный тернарный оператор (т.е. оператор, который принимает три аргумента) в язык, который они используют.
Ответ 2
Это тернарный оператор, это в основном оператор inline if
x ? y : z
работает как
if(x) y else z
кроме, вместо выражений вы имеете выражения; поэтому вы можете использовать его в середине более сложного оператора.
Это полезно для написания краткого кода, но его можно использовать для создания сложного кода.
Ответ 3
Он называется условным оператором .
Вы можете заменить его на:
int qempty(){
if (f == r) return 1;
else return 0;
}
Ответ 4
Вы можете просто переписать его как:
int qempty(){ return(f==r);}
Что делает то же самое, что сказано в других ответах.
Ответ 5
Это условный оператор.
a? b: c
Это ярлык для IF/THEN/ELSE.
означает: если a истинно, верните b, else верните c. В этом случае, если f == r, верните 1, else вернет 0.
Ответ 6
Знак вопроса - условный оператор. Код означает, что если f == r, то возвращается 1, в противном случае возвращается 0. Код можно переписать как
int qempty()
{
if(f==r)
return 1;
else
return 0;
}
который, вероятно, не самый чистый способ сделать это, но, надеюсь, поможет вам понять.
Ответ 7
Просто заметьте, если вы когда-нибудь увидите это:
a = x ? : y;
Это расширение GNU для стандарта (см. https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals).
Это то же самое, что и
a = x ? x : y;