Ir ao conteúdo
  • Cadastre-se

Funcionalidade do operador ternário


eliumoraes

Posts recomendados

Boa tarde,

 

Estou tentando entender como utilizar o operador ? para retornar um valor numa função que compara strings, mas não consigo.

 

Encontrei nesse site, um exemplo assim:

 

return
    strcmp(registerName, "zero")? 00000:
    strcmp(registerName, "at")  ? 00001:
    strcmp(registerName, "v0")  ? 00010:
    strcmp(registerName, "v1")  ? 00011:
    ...

 

Eu tenho uma string, que pode ser uma de entre 5 opções, e quero que ela retorne um valor entre 1 e 5, dependendo do que o usuário escrever.

Minha dúvida fica relativa a ordenação aí, eu coloquei exatamente do jeito que o cara especificou e não deu certo.

 

int valor(char registerName[10]){
	return
    strcmp(registerName, "teste1")? 1:
    strcmp(registerName, "teste2")  ? 2:
    strcmp(registerName, "teste3")  ? 2:
    strcmp(registerName, "teste4")  ? 4:
    strcmp(registerName, "teste5")  ? 5:
}

Qual a maneira certa de utilizar esse operador em conjunto com strcmp?

 

Link para o comentário
Compartilhar em outros sites

@Mauro Britivaldo Isso foi perfeito.

 

Eu não havia entendido que precisava de um teste final ali, que você setou como -1;

Você também utilizou o operador ! (logical not), acredito que acontece o seguinte:

  • O operador "?" verifica se a condição antes dele é verdadeira (1) ou falsa (0).
  • Se ela for verdadeira ele returna o valor após ele, caso seja falsa passa para a condição depois do ":".
  • strcmp verifica se a variável contém o valor especificado, caso sim retorna 0 caso contrário retorna <0 ou >0.
  • ! serve para inverter o 0, assim caso bateu os valores e strcmp retornou zero, o ! inverte pra 1 e o ? imprime o valor desejado.

É isso ou eu confundi?

OBS: Eu utilizei pra resolver este problema, ficou assim.

Muito obrigado pela ajuda!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...