Ir para conteúdo
Fórum Script Brasil
  • 0

Podemos abolir >= e <= ?


AspiranteJunior

Pergunta

Pessoal, estava conversando com um brother meu aqui e percebemos que <= e >= não tem utilidade algum em programação, uma vez que:

if varLoka >= varNormal

corresponde à

if varNormal < varLoka

>= faz duas comparações, se é maior, e se é igual... se uma das duas for verdadeida, ele retorna true...

Vendo assim, não dá para perceber que >= é inútil e mais pesado, não?

Ou alguém tem algum exemplo em que >= e <= seja realmente útil(insubistituível pelo < sem perder eficiência)?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Acho que você se confundiu um pouco, pois o < retorna exatamente o contrário de >=, sendo necessário usar o operador de complemento (não) para obter o resultado desejado.

Um dos pontos a favor do >= e <= é legibilidade. É muito mais fácil de ler um código do tipo

if ( x >= y )
que um do tipo
if ( !(x <y) )

Sobre ser mais ou menos lento, é irrelevante, pois a maioria dos processadores atuais consegue fazer milhões de operações de comparação entre tipos primitivos por segundo (uma operação de escrita no console leva muito mais tempo). Também não faz muito sentido dizer que o >= faz duas comparações, porque não sabemos (eu pelo menos não sei) como a ULA do processador realiza a comparação.

Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade o que ele diz é que, por < retornar o contrário de >=, é possível utilizar o outro operador e inverter a operação

Por exemplo:

(x>=y) = (y<x)

Quanto à forma como é processada essa operação eu não sei. Quando tiver tempo vou verificar como fica o código em assembly resultante de uma comparação como essa em C.

Mas mesmo que haja essa diferença, como o Luiz Rodrigo já falou, é algo praticamente insignificante. Esse operador costuma ser utilizado por questão de legibilidade do código.

Link para o comentário
Compartilhar em outros sites

  • 0

De acordo com os compiladores modernos não há distinção de tempo entre as comparações

(x>=y) = (y<x)
Tomando-se por base números com/sem sinais de 8 ou 16 bits Tem-se a instrução básica: CMP <destino><origem> JCC <etiqueta> Onde:
CC de números com sinal |CC de números sem sinal
G (Greater)             |A (Above)
L (Less)                |B (Below)
E (Equal)               |E (Equal)
N (Not)                 |N (Not)
A instrução JCC para >= e/ou !< em comparação de numeros sem sinal ficaria
Instrução | Descrição              | Condição vedadeira 
JAE       | Jump if Above or Equal |  Destino >= origem
JNB       | Jump if Not Below

como você podem ver existem 2 instruções, apenas. A comparação (CMP <destino><origem> ) e a ação conforme a resposta (JCC <etiqueta>)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...