Ir ao conteúdo
  • Cadastre-se
eliumoraes

Funcionalidade do operador ternário

Recommended Posts

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?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

.

Editado por Mauro Britivaldo
Não testei o código.

Compartilhar este post


Link para o post
Compartilhar em outros sites
int valor(char registerName[10])
{
    return
         !strcmp(registerName, "Name1")? 1
        :!strcmp(registerName, "Name2")? 2
        :!strcmp(registerName, "Name3")? 3
        :!strcmp(registerName, "Name4")? 4
        :!strcmp(registerName, "Name5")? 5
        : -1;
}

Faça-me perguntas ... perguntas

  • Curtir 1

Compartilhar este post


Link para o post
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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@eliumoraes CORRETO!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×