Pergunta

int qempty()
{
    return (f == r ? 1 : 0);
}

No trecho acima, o que significa "? " significa? O que podemos substituí-lo por?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top