Ir ao conteúdo

Posts recomendados

Postado

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?

 

Postado
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
Postado

@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!

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!