O que '?' fazer em C ++?
-
18-09-2019 - |
Pergunta
int qempty()
{
return (f == r ? 1 : 0);
}
No trecho acima, o que significa "? " significa? O que podemos substituí-lo por?
Solução
Isto é comumente referido como o operador condicional e, quando usado como este:
condition ? result_if_true : result_if_false
... se os avalia condition
para true
, as avalia expressão a result_if_true
, caso contrário, ela é avaliada como result_if_false
.
É sintática açúcar, e, neste caso, pode ser substituído por
int qempty()
{
if(f == r)
{
return 1;
}
else
{
return 0;
}
}
Nota: Algumas pessoas se referem a ?:
como " o operador ternário ", porque é o único operador ternário (ou seja, operadora que recebe três argumentos) na língua eles estão usando.
Outras dicas
Este é um operador ternário, é basicamente um inline if
x ? y : z
funciona como
if(x) y else z
Só que, em vez de declarações você tem expressões; assim você pode usá-lo no meio de uma instrução mais complexa.
É útil para escrever código sucinto, mas pode ser usado em demasia para criar difícil manter o código.
Você pode simplesmente reescrevê-la como:
int qempty(){ return(f==r);}
O que faz a mesma coisa que disse em outras respostas.
É o chamado condicional operador .
Você pode substituí-lo com:
int qempty(){
if (f == r) return 1;
else return 0;
}
É o operador condicional.
a? b: c
É um atalho para IF / THEN / ELSE.
meios: se um é verdadeiro, o retorno b, else return c. Neste caso, se f == r, retorno 1, outra de retorno 0.
Apenas uma nota, se você já viu isso:
a = x ? : y;
É uma extensão GNU com o padrão (consulte https: //gcc.gnu .org / onlinedocs / gcc / Conditionals.html # Conditionals ).
É o mesmo que
a = x ? x : y;
O ponto de interrogação é o operador condicional. Os meios de código que se f == r, em seguida, 1 é retornado, caso contrário, retornam 0. O código pode ser reescrita como
int qempty()
{
if(f==r)
return 1;
else
return 0;
}
que provavelmente não é a forma mais limpa de fazer isso, mas espero que ajuda a sua compreensão.