Что значит '?' делать в C ++?
-
18-09-2019 - |
Вопрос
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;
}
это, вероятно, не самый чистый способ сделать это, но, надеюсь, поможет вашему пониманию.